リフレクションに関しての質問になります。
クラスSample内にある、コメントNAME0以下に関しては全く問題なく実行されているのですが
コメントName1以下に関しては、エラーになってしまいます。
Testクラス内にあるname1はMap型ですので、
Map#get()で取得できると思ったのですが、
name1.get(null)の結果が、Object型なので、そこからどうすればいいのかがわかりません。
どなた様かご存知の方いらっしゃいましたら、ご教授ください。よろしくお願いいたします。
RESULT
1Exception in thread "main" java.lang.Error: Unresolved compilation problem: 2 The method get(String) is undefined for the type Object 3 at Sample.main(Sample.java:25)
Java
1 2import java.lang.reflect.Field; 3import java.util.HashMap; 4import java.util.Map; 5 6class Test { 7 public static String name0 = "ZZZ"; 8 public static Map<String, String> name1 = new HashMap<>() {{ 9 put("aaa", "AAA"); 10 put("bbb", "BBB"); 11 put("ccc", "CCC"); 12 }}; 13} 14 15class Sample { 16 public static void main(String args[]) { 17 try { 18 19 // NAME0 20 Field name0 = Class.forName("Test").getField("name0"); 21 System.out.println(name0.get(null)); 22 23 // NAME1 24 Field name1 = Class.forName("Test").getField("name1"); 25 System.out.println(name1.get(null).get("ccc")); 26 27 } catch(ReflectiveOperationException ec) { 28 System.out.println(ec); 29 } 30 } 31}
補足情報
Java: 11
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/09 12:01