需要公共VS之间有什么区别需要Java 9中的传递

时间:2017-11-20 13:25:15

标签: java java-9

我了解到,为了使用任何其他导出的模块,我们需要将该模块指定为requires

module mymodule{
       requires othermodule.xyz;
}

othermodule使用thirdmodule并且mymodule需要时,othermodule应该像这样定义传递依赖:

module othermodule {
       requires transitive thirdmodule  
}

但是,我见过许多使用public关键字的网站:

module othermodule {
       requires public  thirdmodule  
}

两种形式之间有什么区别;即requires publicrequires transitive

1 个答案:

答案 0 :(得分:5)

requires public是在Java 9发布之前修订的模块子语言的早期版本的一部分。根据Java 9 JLS,public关键字不允许在 ModuleDirective :请参阅JLS 7.7

使用requires public语法的网站已过期/不正确。这在下面得到承认,例如:

基本上requires public语法已过时(现在无效),requires transitive是其替代品。