在Java9中,requires public和requires transitive的区别是什么
我了解到,为了使用任何其他导出的模块,我们需要将该模块指定为requires
:
module mymodule{
requires othermodule.xyz;
}
当othermodule
在thirdmodule
上使用并且mymodule
也需要时,othermodule
应该像这样定义传递依赖项:
module othermodule {
requires transitive thirdmodule
}
然而,我看到许多网站在这种情况下使用public
关键字:
module othermodule {
requires public thirdmodule
}
这两种形式的区别是什么;i、 e.requires public
和requires transitive
# 1 楼答案
requires public
是模块子语言早期版本的一部分,在Java9发布之前进行了修订。根据Java 9 JLS,在ModuleDirective中不允许使用public
关键字:参见JLS 7.7使用
requires public
语法的网站已过时/不正确。这一点在以下方面得到了认可,例如:基本上
requires public
是过时(现在无效)的语法,requires transitive
是它的替代品