在看《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 

解决方案 »

  1.   

     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;