我最近学习了反射。 Class类有很多getDeclaredXXX ()。 我们知道这样的方法是获取类中所有信息的方法。 用但是我今天发现他访问一些private修饰的信息时,访问会出一些问题例如getDeclaredMethods ()这样的方法他在api上这样说。
现在,您可以看到此方法返回的Method对象数组包含访问修饰符的方法,如public、protect、default和private。 例如:
测试默认方法没有问题。 正如api文档中所述,其他方法应该没问题吧,但是! ! 私有修饰后
这显然与api文档的描述不同,我无法访问private限定的方法。 但是,如果使用setAccessible () )方法忽略访问修饰符,则会询问此方法。
这就是我在这篇文章中想说的。
然后测试了Method、Filed和Constructor这两个反射中常用的类,结果显示这三个如果在一个类中被private修饰后,如果不用setAccessible(true)则无法访问。
构造器: