[英]Can I prevent a package from importing specific other packages in Java
当代码都位于同一个 Java 项目中时,Java 或 eclipse(或 eclipse 插件)是否具有防止一个包命名空间使用另一个包命名空间的功能,而不管公共类的可见性如何?
例如包“myapp.model”可能永远不会从“myapp.fxview”导入
背景
我正在使用 Eclipse 使用 Java 中的“模型视图控制器”架构编写应用程序。
“myapp.model”包含纯Java代码,没有外部库或平台特定代码“myapp.fxview”包含覆盖JavaFX类的类
我想确保我的模型代码不会因为对视图代码的依赖而“受到污染”(例如,在我的模型中意外使用了来自“视图”实现的枚举),以便我可以在多个平台上使用我的模型(JavaFX PC 、Android、WebServer 后端)
我想将所有代码保存在一个项目中,以尽量减少处理项目/工作区设置问题的时间。 (我知道使用单独的项目很容易解决这个“问题”)
通过使用 Java 9 或更新版本中可用的模块系统。 有模块声明,例如“exports...to”或“opens...to”。 通过使用这些,您可以明确限制哪些包在何处可用。 为了支持这一点,更好地重组包名称以表示可能存在多个视图(myapp.fxview -> myapp.view.fx)。
这段未经测试的代码大致显示了它的外观
module modelmodule {
exports myapp.model to myapp.view.fx;
exports myapp.model to myapp.application;
}
module viewmodule {
exports myapp.view.fx to myapp.application;
}
@see https://www.oracle.com/corporate/features/understanding-java-9-modules.html
感谢 Thomas 在评论中指出我正确的方向。 我一直在工作中使用 Java 8,因此在家里也坚持使用 Java 8。 因此,直到现在我才知道 Modules 系统。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.