我了解到,为了使用任何其他导出的模块,我们需要将该模块指定为requires
:
module mymodule{
requires othermodule.xyz;
}
当othermodule
使用thirdmodule
并且mymodule
需要时,othermodule
应该像这样定义传递依赖:
module othermodule {
requires transitive thirdmodule
}
但是,我见过许多使用public
关键字的网站:
module othermodule {
requires public thirdmodule
}
两种形式之间有什么区别;即requires public
和requires transitive
?
答案 0 :(得分:5)
requires public
是在Java 9发布之前修订的模块子语言的早期版本的一部分。根据Java 9 JLS,public
关键字不允许在 ModuleDirective :请参阅JLS 7.7。
使用requires public
语法的网站已过期/不正确。这在下面得到承认,例如:
基本上requires public
语法已过时(现在无效),requires transitive
是其替代品。