如何使类可以从不同的包访问,但不能从java中的不同库/ jar访问?

时间:2014-10-28 12:00:18

标签: java class jar package access-modifiers

我希望我在java中的库/ jar只保持其行为(公开的接口)公开,并希望其余的东西非公开用于外部世界。为了保持代码模块化,我还想使用不同的包。

如何在同一个jar中的不同包中创建彼此可访问的类,但是不能从jar之外的任何客户端访问它?

3 个答案:

答案 0 :(得分:1)

虽然OSGi使其成为可能,但您无法在普通Java中轻松完成此操作。更好的方法通常是创建一个带有接口的独立API库,让你的"私有"类实现这些接口。然后客户端代码可以使用这些接口与您的库进行交互,但不需要了解详细信息。

答案 1 :(得分:1)

您可以使用OSGi。

这是开始了解OSGi的更多信息的好地方:http://www.vogella.com/tutorials/OSGi/article.html

答案 2 :(得分:0)

您可以从您希望维护的公共接口(即proguard)中隐藏所有代码。

对代码进行模糊处理不会使其本身无法访问,但会使其难以使用。