首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

反射调用setter/getter方法的一个小疑点

2013-09-26 
反射调用setter/getter方法的一个小问题在看《java开发实战经典》的反射那一章,通过反射调用setter和getter,

反射调用setter/getter方法的一个小问题
在看《java开发实战经典》的反射那一章,通过反射调用setter和getter,我自己实验的时候遇到一个问题,怎么把getter的返回值给返回了?
书上的代码是这样的:


public static void setter(Object obj,String att,Object value,Class<?>type){
try{
Method met = obj.getClass().getMethod("set"+initStr(att),type);
met.invoke(obj, value);
}catch(Exception e){
e.printStackTrace();
}
}
public static void getter(Object obj,String att){
try{
Method met = obj.getClass().getMethod("get"+initStr(att));
System.out.println(met.invoke(obj));
}catch(Exception e){
e.printStackTrace();
}
return temp;
}

我想把getter方法改为返回那个返回值,这样写怎么不对啊?

public static Object getter(Object obj,String att){
try{
Method met = obj.getClass().getMethod("get"+initStr(att));
Object temp = met.invoke(obj);
}catch(Exception e){
e.printStackTrace();
}
return temp;
}

invoke方法不是有返回值的吗? 反射?java?
[解决办法]
 
try{
            Method met = obj.getClass().getMethod("get"+initStr(att));
            Object temp = met.invoke(obj);
        }catch(Exception e){
            e.printStackTrace();
        }
        return temp;
改为
 Object temp=null;
try{
            Method met = obj.getClass().getMethod("get"+initStr(att));
            temp = met.invoke(obj);//这里定义是局部变量,return娶不到的。
        }catch(Exception e){
            e.printStackTrace();
        }


        return temp;

热点排行
Bad Request.