将实现的类分配给接口(interface)时出现Java Reflection NoSuchMethod异常

标签 java reflection

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/

相关文章:

python - 使用locate动态实例化类

c# - 由于一些无效的 IL 代码,将简单类转换为 IL 失败?

java - 如何在 Java 代码中使用 Scala 注解

c# - 在 C# 中使用反射检测编译器生成的默认构造函数

java - 从 Activity 导航到 TabLayout/ViewPager fragment

java - 如何有效地检查两个字符是否是键盘上的邻居?

接受类及其接口(interface)的 Java 类型(逆变)

java - 如何查看被截断的完整 ant 构建错误

c# - 如何使用反射调用方法并传递编译时类型未知的参数?

java - 在阅读主题后异步提交消息