子包之间的Java私有类

时间:2016-03-29 12:46:06

标签: java oop

我的Java库由几个子包组成(com.example.lib.api,com.example.lib.imp,com.example.lib.util,...)。

api中的类使用imp中的A类和B类。 imp中的类使用util中的C类。 我被迫公开ABC,但我不希望他们接触到我图书馆的用户。没有隐藏任何东西,我的库是开源的,但最小的API更容易理解。

有办法吗?

2 个答案:

答案 0 :(得分:6)

在Java 9中,您将能够控制从JAR导出的包。通过这种方式,您可以将其公开,但其他任何人都无法使用。

目前你无法控制这一点。您要么将所有内容放在一个包中,要么依赖文档来明确它们不应该被使用。例如jdk.internal假设除了JDK之外,没有人应该使用这些。

答案 1 :(得分:0)

您不能在任何其他包中使用私有类。相反,可以将类公开,并且可以保护方法和变量。因此,在这种情况下,类可以在需要的地方扩展,并且类中的内容只能由扩展它的子类访问。