[英]Java reflection: Get inner instantiated field
我有一個看起來像這樣的界面:
public interface A {
public interface B {
public static final Cat cat = new Cat("Alice");
}
}
有什么方法可以通過反射訪問Cat對象嗎?
我試過這個:
Field catField = Class.forName("A.B").getField("cat");
但它給了我一個ClassNotFoundException。
提前致謝!
你需要使用帶有反射的Outer$Inner
語法,而不是Outer.Inner
。
這個語法是:
Field catField = Class.forName("com.xx.A$B").getField("cat");
System.out.println(catField.toString());
(我無法判斷您的包裝聲明是否缺失,如果是,則需要添加)
您將使用InterfaceName.class
。
Class cat;
try {
cat = A.B.class;
Field catField = cat.getField("cat");
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.