本帖最后由 邱成 于 2012-9-17 07:08 编辑
package com.cn.demo.classdemo05;
import java.lang.reflect.Method;
public class InvokeMethodDemo04 {
public static void main(String[] args) throws Exception {
Class<?> c = Class.forName("com.cn.demo.classdemo05.Person");
Object o = c.newInstance() ;
set("name","MLDN") ;
set("age",30) ; // 这个地方有错误 ,难道反射的时候不通自动的装箱吗?
get("name",o) ;
get("age",o) ;
}
/**
*
* @param name 属性名称
* @param value 属性值
* @param obj 要操作的对象
*/
public static void set(String name, Object value, Object obj)
throws Exception {
Method met = obj.getClass().getMethod("set" + initStr(name),
value.getClass());
met.invoke(obj, value); // 调用方法
}
public static void get(String name, Object obj) throws Exception {
Method met = obj.getClass().getMethod("get" + initStr(name));
Object value = met.invoke(obj);
System.out.println(value);
}
public static String initStr(String name) {
StringBuffer buf = new StringBuffer();
buf.append(name.substring(0, 1).toUpperCase())
.append(name.substring(1));
return buf.toString();
}
}
我传int类型的时候给我报错.
ReflectDemo.invokDemo.Person.setAge(java.lang.Integer)
难道反射的时候int不能自动装箱成Integer吗. |
|