Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不公开内部类的情况下在包中组织库_Java - Fatal编程技术网

Java 如何在不公开内部类的情况下在包中组织库

Java 如何在不公开内部类的情况下在包中组织库,java,Java,我正在开发一个Java库。为了在内部组织工作,我将我的类放在两个包中:A和B。我只想向库用户公开包A中的一些类。但是在内部,我需要从包A访问包B中的一些类 如何做到这一点,而不向库用户公开包B中的类?如果我将它们设置为私有包,我自己就无法从A访问它们。如果我将它们设置为公共包,则它们对库用户可见 我是否必须将库中的所有代码放在一个大的包中,以便访问内部包私有类?通常这是通过不同的jar完成的。one jar将提供一个包含最终用户需要使用的类的包。其他jar将包含A类依赖的类。 这通常是通过Mav

我正在开发一个Java库。为了在内部组织工作,我将我的类放在两个包中:A和B。我只想向库用户公开包A中的一些类。但是在内部,我需要从包A访问包B中的一些类

如何做到这一点,而不向库用户公开包B中的类?如果我将它们设置为私有包,我自己就无法从A访问它们。如果我将它们设置为公共包,则它们对库用户可见


我是否必须将库中的所有代码放在一个大的包中,以便访问内部包私有类?

通常这是通过不同的jar完成的。one jar将提供一个包含最终用户需要使用的类的包。其他jar将包含A类依赖的类。
这通常是通过Maven之类的工具完成的。ApacheCommons库的使用就是一个很好的例子。您可以在类中导入它们,但不需要将它们包含在jar中。您可以让Maven在运行时需要它们。

您不能。直到……才大概任何
public
都是全局
public
。如果您仅从包A访问这些类,那么为什么包B中的类是全局
public
?您的设计在概念上似乎有缺陷。我主要访问同一个包中的类,但有时我需要访问另一个包中的类。例如,包含图形类的包有时也需要访问包含文件管理的包中的类。@Bartez但为什么?这听起来像是一个有缺陷的设计。图形包不应访问文件管理包的内部详细信息。不要交叉关注。您的文件管理包应该公开一个关于如何使用它的清晰界面。只有在客户端使用时,才应通过该接口使用它。如果图形出于某种原因需要使用文件管理,它将充当文件管理的客户机。我确实发现这个问题,在包名中包含“internal”是否会自动隐藏包?或者这只是一个Eclipse自动完成约定?