使用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方法参数类型更改为ArrayList
from时,List
将执行正常。有没有一种方法可以将setter方法的参数保持为超级类型,并且在从类中获取方法时仍无需手动指定参数的类型即可使用反射?
回答:
与其他答案相反,有一个非常简单的解决方案。请参阅java.beans.Statement
。它为您提供了一种执行任意反射代码的方式,而不必担心实际类型和形式类型(以及其他一些事情)。
以上是 使用Java反射调用setter方法 的全部内容, 来源链接: utcz.com/qa/407358.html