将实现的类分配给接口时,Java Reflection NoSuchMethod异常

时间:2013-04-09 20:28:18

标签: java reflection

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我有多个包含不同属性的实现。

2 个答案:

答案 0 :(得分:6)

getField()方法只会找到public字段。您可以使用getDeclaredField方法,如果字段直接在类上声明,则会找到该字段,无论它是public还是

当您说getClass()时,即使变量Class被输入为接口B,您也会获得运行时a(此处为A) }。

答案 1 :(得分:0)

Field[] declaredFields = dtoKlass.getDeclaredFields();

做这样的事。我使用getDeclaredField()来完成你想要实现的目标。