mar*_*den 5 java reflection setter
我有一个具有很多属性的对象,每个属性都有它的getter和setter.每个属性都有一个非基本类型,我在运行时不知道.
例如,我所拥有的是:
public class a{
private typeA attr1;
private typeB attr2;
public typeA getAttr1(){ return attr1; }
public typeB getAttr2(){ return attr2; }
public void setAttr1(typeA at){ attr1 = at; }
public void setAttr2(typeB at){ attr2 = at; }
}
public class typeA{
public typeA(){
// doesn't matter
}
}
public class typeB{
public typeB(){
// doesn't matter
}
}
Run Code Online (Sandbox Code Playgroud)
因此,使用反射,我获得了属性的setter方法.以标准方式设置值是这样的:
a test = new a();
a.setAttr1(new typeA());
Run Code Online (Sandbox Code Playgroud)
但是我怎么能用反射呢?我已经使用了反射的setAttr1()方法,但我不知道如何创建一个新的typeA对象插入到setter中.
Bal*_*usC 11
Class<TypeA> cls = TypeA.class;
TypeA typeA = cls.newInstance();
Run Code Online (Sandbox Code Playgroud)
或者,在您必须确定方法参数类型的特定情况下:
Class<?> cls = setterMethod.getParameterTypes()[0];
Object value = cls.newInstance();
setterMethod.invoke(bean, value);
Run Code Online (Sandbox Code Playgroud)
您可以在Sun教程中了解有关该主题的反射的更多信息.也就是说,类名应该以大写字母开头.我已经在上面的例子中纠正了它.
顺便说一句,你可能会发现这里提到的工具之一也很有用,而不是重新发明Javabean反射轮.
| 归档时间: |
|
| 查看次数: |
17334 次 |
| 最近记录: |