反射中获取成员变量值和执行方法时为什么需要传参对象
接触学习java反射时,相信不少的同学会有一个疑问【为什么获取成员变量值需要传递一个对象呢?】。
用一个非常普通的Student类来做实例
我们大多都知道,通过getFiled(指定获取的变量名称) 就可以得到了相对应的Filed成员变量对象,
包含着类全名以及变量名称!!!
那么问题来了,为什么获取成员变量的值就需要传入一个对象呢???
我们不是已经获取了Filed了吗,Filed里面包含着全类名,源码底层get()方法里面可以根据Filed帮我们生成对象,为什么还要我们自己手动去创建对象,然后传入进去,这不是多此一举吗。
接着看看,帮你说明一下为什么底层不帮我们生成对象的原因
这是通过传入同一个对象,设置name后得到的正确值
如果源码底层get()方法和set()方法帮我们创建了对象,那么会产生两个不同的对象,就会出现null问题,
我做出了一个简单的例子给大家看一下,
总结:这就是为什么需要我们传入对象的原因,因为我们可以传入同一个对象,从而通过set()方法和get()方法才能对同一个对象设置和获取正确的值,如果底层源码在set()和get()里面帮我们创建对象就会产生不同的对象,就会造成极大的错误,所以非要我们自己传入对象来达成一致。
真心佳作,实属不易!码农道路,多多指教!