使用Java反射调用setter方法

我需要使用反射调用类的setter方法,并且代码如下:

try {             

Method method = myObj.getClass().getMethod("set" + fieldName, new Class[] { value.getClass() });

method.invoke(myObj, value);

} catch (Exception ex) {

ex.printStackTrace();

}

value是一个ArrayList以及设置器方法如下:

public void setNames(List<String> names){

this.names = names;

}

java.lang.NoSuchMethodException运行此代码时,将引发A

,但是将setter方法参数类型更改为ArrayListfrom时,List将执行正常。有没有一种方法可以将setter方法的参数保持为超级类型,并且在从类中获取方法时仍无需手动指定参数的类型即可使用反射?

回答:

与其他答案相反,有一个非常简单的解决方案。请参阅java.beans.Statement。它为您提供了一种执行任意反射代码的方式,而不必担心实际类型和形式类型(以及其他一些事情)。

以上是 使用Java反射调用setter方法 的全部内容, 来源链接: utcz.com/qa/407358.html

回到顶部