【发布时间】:2023-03-10 19:09:01
【问题描述】:
假设我在我的项目中使用了第三方 jar A.jar,其中一些成员(类、方法等)具有默认访问权限(包私有)。现在,如果我在我的项目中创建相同的包名,我可以使用 A.jar 中的默认访问修饰符访问成员(我在 Eclipse 中使用 Java Projects 进行了尝试)。
如果一个类没有修饰符(默认,也称为包私有),它只在自己的包中可见
在这个特定的用例中是否违反了这种理念(也没有使用反射),因为这不是A.jar 的开发人员想要的,因为她只希望包中的类可以访问这个特定的成员?
这是否意味着,package-private 是一种便利机制,但不能用于保护数据等?
【问题讨论】:
-
在存在反射的情况下,没有范围修改可以“用于保护数据”。像 public 和 private 这样的修饰符是一种组织工具,而不是一种安全机制。
-
是的,我明白,无论如何,SecurityManager 中的反射将被禁用。但是我的问题在于没有反思,当我想确保某些东西只能在我的包中访问时。很抱歉有混乱。
标签: java access-modifiers