有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java9中,requires public和requires transitive的区别是什么

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

module mymodule{
       requires othermodule.xyz;
}

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

module othermodule {
       requires transitive thirdmodule  
}

然而,我看到许多网站在这种情况下使用public关键字:

module othermodule {
       requires public  thirdmodule  
}

这两种形式的区别是什么;i、 e.requires publicrequires transitive


共 (1) 个答案

  1. # 1 楼答案

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

    使用requires public语法的网站已过时/不正确。这一点在以下方面得到了认可,例如:

    • ^马克·莱因霍尔德的{a2}(2016年3月8日版本)

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