这是问题Java: Subpackage visiblity?的延续。提出要求的原因是引起更广泛社区的注意。
问题两个软件包之间是否有任何关系:odp.proj和odp.proj.subpackage?
有人试图回答here,但未能描述它。
答案 0 :(得分:4)
不,从Java语言的角度来看,odp.proj
和odp.proj.subpackage
之间没有任何关系。
对于代码,odp.proj.subpackage将驻留在odp.proj的子目录中,并且某些工具和IDE可能会在UI中将它们组合在一起,但是对于语言访问控制或其他语言功能,没有任何关系。< / p>
Java没有子包的概念,因此odp.proj.subpackage和odp.proj与其他任何不同命名的包都不同。
答案 1 :(得分:3)
您正在寻找的确切功能不存在。
They considered doing it for Java 1.7, but the case is dormant.
就实际情况而言,odp.proj
和odp.proj.subpackage
之间除了目录结构,protected
关键字和import odp.proj.*;
之类的内容之外没有任何关系 - 除了该语句没有从odp.proj.subpackage
接近您想要的方法的一种方法是为您想要公开的内容发布API规范,并将其余内容留给未记录或私下记录。可能你甚至可以使用像ProGuard这样的东西来混淆每个版本中的私有类。
答案 2 :(得分:2)
Java没有子包的概念。
除了组织之外,包使用protected
和“包”(空白)修饰符定义方法/字段的可访问性,这允许相同类和相同包访问。但是,此同包访问也不包括子包类。
答案 3 :(得分:0)
通常,如果包名称包含“内部”单词,则用户不应直接使用它,因为它不受保证,这些包将在未来的版本中出现。这只是一个命名约定,但仍然可以作为一种解决方法。