关于Field对象的问题

来源:5-1 Java 方法反射的基本操作

Antique

2017-08-29 20:47

背景:不考虑访问控制权限问题,默认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回答

  • 慕函数8098486
    2017-08-30 16:13:20
    已采纳

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

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

    Antiqu...

    谢谢,很清楚

    2017-08-30 22:01:58

    共 1 条回复 >

反射——Java高级开发必须懂的

反射,Java高级开发必须要懂的知识点,学好Java高级课程的基础

151493 学习 · 335 问题

查看课程

相似问题