使用反射时需要注意哪些潜在问题?我很困惑,为什么Java提供这种类型的功能来访问私有数据成员。
私有: 就像我想的那样,只有声明了它的类才能看到它。
那么为什么可以访问其他班级的私人物品呢?这个术语(反射)完全溢出了我在Java中的private(访问说明符)属性的概念。
我访问了有关此主题的许多链接,但未给出有关此主题的完整说明。例如:
package example;
import java.lang.reflect.Method;
class A{
private void privateMethod(){
System.out.println("hello privateMethod()");
}
}
class B{
public static void main(String[] args) throws Exception {
A d = new A();
Method m = A.class.getDeclaredMethod("privateMethod");
m.setAccessible(true);
m.invoke(d);
}
}
因此,请深入解释有关此方法的方案?我是否需要其他类中私有方法可访问性的优点和缺点?
所有“私有”声明和其他形式的声明都是开发工具的标志,以便它知道您打算如何使用所涉及的字段或方法。这样,当开发人员以非预期的方式使用这些类/字段/方法时,开发工具可以向开发人员发出警告或错误。
反射是一种工具,它使开发人员可以忽略或避开这些标志,这些标志指示您正在以从未使用过的方式使用类/字段/方法。因此,总的来说,反射显示出不良的体系结构。
因此,将某事物声明为私有,公共或静态是没有“优势或劣势”的;它们仅是允许开发人员以特定方式访问/使用您的类/字段/方法的简单工具,可保持代码干净整洁。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句