Java 反射:获取内部实例化字段
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();
}
我的界面如下所示:
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();
}