私有是私有的,那么为什么Java赋予使用反射访问私有方法的便利?

Kunwar Avanish:

使用反射时需要注意哪些潜在问题?我很困惑,为什么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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章