前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题8:如何通过反射访问属性和方法?

面试题8:如何通过反射访问属性和方法?

作者头像
爪哇缪斯
发布2023-05-09 21:34:01
3900
发布2023-05-09 21:34:01
举报
文章被收录于专栏:爪哇缪斯爪哇缪斯

在“面试题7”中,已经介绍了我们使用反射的3个步骤,分别是:获取Class对象——>获得构造方法Constructor对象——>调用newInstance方法来创建对象实例。

既然我们已经掌握了如何通过反射获得实例对象的方法。那么,我们如果通过反射去访问属性和方法呢?



【访问属性】

我们可以通过getField和getDeclaredField这两种方法来访问属性,它们之间的差异如下所示:

  • getField 只能获取public的,包括从父类继承来的字段。
  • getDeclaredField 可以获取本类所有的字段,包括private的,但是不能获取继承来的字段。(注:这里只能获取到private的字段,但并不能访问该private字段的值,除非加上setAccessible(true))


【访问方法】

我们可以通过getMethod和getDeclaredMethod这两种方法来访问方法,它们之间的差异点参照getField和getDeclaredField。


【访问非public的属性和方法】

如果我们需要访问非public的属性和方法,我们需要为Field或Method实例设置setAccessible(true),否则无法进行访问。


综上所示,我们可以看下面代码示例:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档