反射中获取成员变量值和执行方法时为什么需要传参对象

接触学习java反射时,相信不少的同学会有一个疑问【为什么获取成员变量值需要传递一个对象呢?】。

用一个非常普通的Student类来做实例

我们大多都知道,通过getFiled(指定获取的变量名称) 就可以得到了相对应的Filed成员变量对象

包含着类全名以及变量名称!!!

那么问题来了,为什么获取成员变量的值就需要传入一个对象呢???

我们不是已经获取了Filed了吗,Filed里面包含着全类名,源码底层get()方法里面可以根据Filed帮我们生成对象,为什么还要我们自己手动去创建对象,然后传入进去,这不是多此一举吗。

接着看看,帮你说明一下为什么底层不帮我们生成对象的原因

这是通过传入同一个对象,设置name后得到的正确值

如果源码底层get()方法和set()方法帮我们创建了对象,那么会产生两个不同的对象,就会出现null问题,

我做出了一个简单的例子给大家看一下,

总结:这就是为什么需要我们传入对象的原因,因为我们可以传入同一个对象,从而通过set()方法和get()方法才能对同一个对象设置和获取正确的值,如果底层源码在set()和get()里面帮我们创建对象就会产生不同的对象,就会造成极大的错误,所以非要我们自己传入对象来达成一致。

真心佳作,实属不易!码农道路,多多指教!

发布了21 篇原创文章 · 获赞 52 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_39148512/article/details/91483488