java 利用反射对一个对象所有属性赋值
无伤 2014-09-04 01:52:01 public static void main(String[] args) {
String key = "Age";
Field field;
try {
Class action = Class.forName("cn.Persone");
field = action.getDeclaredField(key);
//field.setAccessible(true);
Object beo = action.newInstance();
Object returnValue = "1";
Class<?> type = field.getType();
Method method = action.getDeclaredMethod("set" + key, type);
method.invoke(beo, returnValue);
System.out.println(beo);
} catch (SecurityException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
如代码所示,希望对某个对象的属性赋值,之前可以给定这个属性的名称,但是赋给这个属性的只能是String类型的,请问反射中有没有统一强转成属性对应类型。
method.invoke(beo, returnValue);这段代码报java.lang.IllegalArgumentException: argument type mismatch异常,
改成:method.invoke(beo,type.cast(returnValue)); 后报“java.lang.ClassCastException