如何限制Java公共类的使用?

时间:2010-07-16 14:21:52

标签: java annotations

我希望能够将Java中的公共类/接口注释为@NonPublic,这意味着此接口只能在此项目中使用,它不< / strong>此项目导出的公共API的一部分

这对于由多个jar文件组成的项目很常见。并非所有public类/接口都是在jar之外真正公开的。

你知道有没有这样做的工具/框架/插件?

3 个答案:

答案 0 :(得分:2)

恕我直言,Java中的软件包系统是存在的最破碎的东西之一。

我不熟悉任何标准的Java级机制,尽管编写一个可以强制执行它的工具或编译器扩展可能很容易。

但是,如果您正在使用OSGi(Eclipse是以这种方式编写的),它的一个优点是用于指定更好的包和模块级限制的系统。

答案 1 :(得分:2)

如果没有OSGi,另一个常见做法就是实现单独的API。

您可以将编译时所需的类与运行时期间所需的类分开。防止库的用户依赖于实现细节。

myLibAPI.jar   
myLibImpl.jar

答案 2 :(得分:1)

OSGi Bundle是解决方案。

如果要将Jar转换为Eclipse插件,可以使用Eclipse RCP版本。右键单击您的项目:Configure - &gt;转换为插件项目