Java反思
我的界面如下
public Interface A { void print();}
Run Code Online (Sandbox Code Playgroud)
接口实现如下
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");
}
}
Run Code Online (Sandbox Code Playgroud)
现在我将child分配给接口如下
A a = new B();
Run Code Online (Sandbox Code Playgroud)
使用反射我试图从父母访问孩子如下
Class clazz = a.getClass()
clazz.getField("abc").set(a, new Integer(1456));
Run Code Online (Sandbox Code Playgroud)
但我发现没有这样的方法例外
任何快速帮助?我正在将孩子分配到父母b/ci有多个包含不同属性的实现.
该getField()方法只会找到该字段public.您可以使用该getDeclaredField方法,无论是否在类上直接声明该字段,都会找到该字段public.
当你说getClass(),你将得到运行时Class(这里B),即使变量a被输入为接口A.