为了账号安全,请及时绑定邮箱和手机立即绑定

关于Field对象的问题

背景:不考虑访问控制权限问题,默认public

代码

Field f = e.getClass().getField("p_int");
// f是一个Field对象,即实例域对象
Object v = f.get(e);
// f.get(e) 查看API文档,即返回对象参数中名为f的值
System.out.println(v);
// 这里v是一个int,通过自动装箱最后再输出。

问题:这里通过反射查看e中的"p_int"域的值,不太理解的是,按照我这种低端选手的思维,e对象中名为f的域的值,写法应该是"v.get(f)",虽然我非常清楚v没有get这个函数,也非常清楚按照API"f.get(v)",才是正确的用法,但是还是非常的难以理解,求解答

正在回答

1 回答

反射的思想就是用Field对象来代理e这个对象来操作,也就是e对象只是Field对象的一个传进来的参数

所以用f.get(e); 如果 直接e.get(v)那就是直接操作e对象,就不是反射了

2 回复 有任何疑惑可以回复我~
#1

Antique 提问者

谢谢,很清楚
2017-08-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于Field对象的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信