黑马程序员技术交流社区
标题:
反射的问题
[打印本页]
作者:
邱成
时间:
2012-9-16 23:37
标题:
反射的问题
本帖最后由 邱成 于 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吗.
作者:
黄敏
时间:
2012-9-16 23:59
麻烦先看确认一下你用的的jdk版本
作者:
武庆东
时间:
2012-9-17 00:08
set("age",30) ; // 这个地方有错误 ,难道反射的时候不通自动的装箱吗?
解释:这里不能进行自动装箱,因为Integer i=30和int i=30这是两个不同的对象,有歧义的地方不能进行自动装箱,再者括号里面的数据是作为参数传递给方法的,不能进行自动装箱!基本数据类型不属于Object类型!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2