在“面试题7”中,已经介绍了我们使用反射的3个步骤,分别是:获取Class对象——>获得构造方法Constructor对象——>调用newInstance方法来创建对象实例。
既然我们已经掌握了如何通过反射获得实例对象的方法。那么,我们如果通过反射去访问属性和方法呢?
【访问属性】
我们可以通过getField和getDeclaredField这两种方法来访问属性,它们之间的差异如下所示:
【访问方法】
我们可以通过getMethod和getDeclaredMethod这两种方法来访问方法,它们之间的差异点参照getField和getDeclaredField。
【访问非public的属性和方法】
如果我们需要访问非public的属性和方法,我们需要为Field或Method实例设置setAccessible(true),否则无法进行访问。
综上所示,我们可以看下面代码示例: