Java 如何在不公开内部类的情况下在包中组织库
我正在开发一个Java库。为了在内部组织工作,我将我的类放在两个包中:A和B。我只想向库用户公开包A中的一些类。但是在内部,我需要从包A访问包B中的一些类 如何做到这一点,而不向库用户公开包B中的类?如果我将它们设置为私有包,我自己就无法从A访问它们。如果我将它们设置为公共包,则它们对库用户可见Java 如何在不公开内部类的情况下在包中组织库,java,Java,我正在开发一个Java库。为了在内部组织工作,我将我的类放在两个包中:A和B。我只想向库用户公开包A中的一些类。但是在内部,我需要从包A访问包B中的一些类 如何做到这一点,而不向库用户公开包B中的类?如果我将它们设置为私有包,我自己就无法从A访问它们。如果我将它们设置为公共包,则它们对库用户可见 我是否必须将库中的所有代码放在一个大的包中,以便访问内部包私有类?通常这是通过不同的jar完成的。one jar将提供一个包含最终用户需要使用的类的包。其他jar将包含A类依赖的类。 这通常是通过Mav
我是否必须将库中的所有代码放在一个大的包中,以便访问内部包私有类?通常这是通过不同的jar完成的。one jar将提供一个包含最终用户需要使用的类的包。其他jar将包含A类依赖的类。
这通常是通过Maven之类的工具完成的。ApacheCommons库的使用就是一个很好的例子。您可以在类中导入它们,但不需要将它们包含在jar中。您可以让Maven在运行时需要它们。您不能。直到……才大概任何
public
都是全局public
。如果您仅从包A访问这些类,那么为什么包B中的类是全局public
?您的设计在概念上似乎有缺陷。我主要访问同一个包中的类,但有时我需要访问另一个包中的类。例如,包含图形类的包有时也需要访问包含文件管理的包中的类。@Bartez但为什么?这听起来像是一个有缺陷的设计。图形包不应访问文件管理包的内部详细信息。不要交叉关注。您的文件管理包应该公开一个关于如何使用它的清晰界面。只有在客户端使用时,才应通过该接口使用它。如果图形出于某种原因需要使用文件管理,它将充当文件管理的客户机。我确实发现这个问题,在包名中包含“internal”是否会自动隐藏包?或者这只是一个Eclipse自动完成约定?