Java 反射
我的界面如下
public Interface A { void print();}
接口(interface)实现如下
public class B implements A {
int abc =0;
public void setAbc(int abc){this.abc=abc;}
public int getAbc(return this.abc;);
void print(){
System.out.println("Hello world");
}
}
现在我将 child 分配到界面如下
A a = new B();
使用反射,我正在尝试从父级访问子级,如下所示
Class clazz = a.getClass()
clazz.getField("abc").set(a, new Integer(1456));
但是我没有发现这样的方法异常
有任何快速帮助吗?我正在将 child 分配给 parent b/c 我有多个包含不同属性的实现..
最佳答案
getField()
方法只会找到public
的字段。您可以使用 getDeclaredField
方法,如果它是直接在类上声明的,它将找到该字段,无论它是否为 public
。
当你说 getClass()
时,你会得到运行时 Class
(这里是 B
),即使变量 a
被类型化为接口(interface) A
。
关于将实现的类分配给接口(interface)时出现Java Reflection NoSuchMethod异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15911843/