反射调用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方法不是有返回值的吗?
...全文
206 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢,明白了
  • 打赏
  • 举报
回复
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;

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧