限制Java包访问

时间:2012-11-17 18:52:21

标签: import package classloader rule

IE中。我有一个GUI包和一个Logic包。

如何阻止Logic类导入GUI类?在同一个项目上工作的其他人(或我自己)可能会这样做,我想阻止它。

例如,解决方案可以是JUnit中的检查,如果完成则会失败,或者是引发异常的运行时检查。沿着这些路线,但如何做到这一点?

3 个答案:

答案 0 :(得分:1)

您可以使用JDepend或DependencyFinder或Degraph编写此类测试。

Degraph是三个工具中唯一明确用于为这类案例编写测试的工具。此外,AFAIK JDepend在最近的Java版本中找不到所有依赖项(如注释中提到的类)。

我是Degraph的作者,所以我有点偏颇。

答案 1 :(得分:0)

我创建了JabSaw项目。它允许您通过使用带注释的类来定义模块,并表达模块之间的关系。默认情况下,模块包含单个包中的所有类。可以使用Maven插件,命令行或单元测试来检查限制。这应该可以解决你的问题。

答案 2 :(得分:-1)

我想到的一个解决方案是将GUI类包私有化。虽然你不能只隔离一个包并说,只有Logic类不能使用GUI,但其他可以。