【发布时间】:2012-06-14 22:26:41
【问题描述】:
我有 2 个 Java 包,A 和 B。假设包 B 中的某些类想要使用包 A 中的某些类,但是,当开发人员出现并开发包 C(或者说,应用程序 C)时,他/她将使用我的包 B,但我不希望他/她能够使用 B 正在使用的 A 中的类。也就是说,我希望我在包 A 中的类是包私有的,以便对应用程序开发人员隐藏它们。但是,我确实希望我自己的包 B 能够访问那些包私有的类。这可以用Java完成吗?我是否基本上只需要硬着头皮将课程公开并希望用户不要尝试使用它们?或者,我是否需要将 A 中的类复制到 B 中?
我的偏好不是 hack-y(即我不想使用反射)。帮忙?
【问题讨论】:
-
如果包 B 可以对类包 A 做某事,那么没有什么可以阻止包 C 对类包 A 做同样的事情。但是,可以阻止包 C 获取实例包 A 中的一个类,它是包 B 中的一个类的成员(除非涉及反射)。
-
如果你想要安全,不要在解释器上编写代码?
-
听起来包 A 和 B 真的应该在同一个包中,或者某种返回私有实现的工厂是必要的。
-
@nhahtdh -> 您能否解释一下,如您所说,“阻止包 C 获取包 A 中的类的实例,该实例是包 B 中的类的成员“?
-
@David -> 你能解释一下如何创建一个“返回私有实现的工厂”吗?
标签: java package share encapsulation package-private