使java类仅在项目/应用程序工作区中可见

时间:2014-04-03 08:23:41

标签: java

我正在使用java开发SDK,我的问题是隐藏某些java类/包,因此使用这个sdk的第三方应用程序不会暴露给这些下划线类

我知道如果sdk中的所有类对象都在一个包内,我可以将默认/受保护的访问修饰符分配给我想要隐藏的类。但是,像许多java项目一样,像我的sdk这样的java项目由不同的包组成,它们适当地对relivant java类进行分组。

这意味着如果我想隐藏/保护com.abc中的类,那么位于com.a中的世界可见的主根类将无法访问com.abc等中受保护的类

我如何为此提供解决方案,而不是仅仅将所有类转储到一个大包中?

感谢。

2 个答案:

答案 0 :(得分:2)

Java命名空间和访问修饰符不是分层的,即使它看起来像是由文件夹组成的命名空间结构。 Java确实有一个带有任意完全限定名称的平面命名空间(点表示法)。

因此,如果您想要关闭库类并在库中同时使用它,则没有其他方法可以将它们放在同一个包中。也许最好解释一下:当你在包之外使用一个类时,这个类构成了API的一部分,因为Java中的每个包都是一个模块。

答案 1 :(得分:1)

您可以在子包中使用工厂类并使用接口。这样你就可以隐藏你的实现类了。