【发布时间】:2017-05-22 20:15:33
【问题描述】:
我正在开发一个 Java 库。为了在内部组织事情,我将我的类放在 2 个包中:A 和 B。我只想将包 A 中的一些类公开给库用户。但在内部,我需要从包 A 访问包 B 中的一些类。
如何在不将包 B 中的类暴露给库用户的情况下做到这一点?如果我将它们设为包私有,我将无法从 A 自己访问它们。如果我将它们设为公开,则库用户可以看到它们。
我是否必须将库中的所有代码放在一个大包中,这样我才能访问内部包私有类?
【问题讨论】:
-
你不能。直到Java 9。也许。任何
public都是全局public。 -
如果您只从包 A 访问它们,为什么包 B 中的类?您的设计在概念上似乎存在缺陷。
-
我主要访问同一个包中的类,但有时我需要访问另一个包中的类。例如,包含图形类的包有时还需要访问包中包含文件管理的类。
-
@Bartez 但是为什么呢?这听起来像是一个有缺陷的设计。图形包应该不访问文件管理包的内部细节。不要交叉关注。您的文件管理包应该公开一个清晰的界面,说明它应该如何使用。如果客户端使用它,则只能通过该接口使用。如果图形由于某种原因需要使用文件管理,它就充当了文件管理的客户端。
-
我确实发现了这个问题stackoverflow.com/questions/26302066/… 在你的包名中包含“internal”会自动隐藏包吗?或者这只是一个 Eclipse 自动完成约定?
标签: java