Java反射
我的界面如下
public Interface A { void print();}
接口实现如下
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));
但我发现没有这样的方法异常
任何快速帮助?我正在将孩子分配给父母b / c我有多个包含不同属性的实现。
答案 0 :(得分:6)
getField()
方法只会找到public
字段。您可以使用getDeclaredField
方法,如果字段直接在类上声明,则会找到该字段,无论它是public
还是
当您说getClass()
时,即使变量Class
被输入为接口B
,您也会获得运行时a
(此处为A
) }。
答案 1 :(得分:0)
Field[] declaredFields = dtoKlass.getDeclaredFields();
做这样的事。我使用getDeclaredField()来完成你想要实现的目标。