java - 在 Java 9 中要求公共(public) VS 要求传递之间有什么区别

标签 java java-9

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

module mymodule{
       requires othermodule.xyz;
}

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

module othermodule {
       requires transitive thirdmodule  
}

但是,我看到很多网站在这种情况下使用public关键字:

module othermodule {
       requires public  thirdmodule  
}

这两种形式有什么区别?即 需要 public需要 transitive?

最佳答案

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

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

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

关于java - 在 Java 9 中要求公共(public) VS 要求传递之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47393126/

相关文章:

java - 无法在 Javadoc 注释中链接到 JDK10

java - Spring Boot Bean反序列化问题

java - 在 J2EE 服务器中匹配两个不同应用程序之间的两个对象实例的最佳方法是什么?

java - 如何在 jshell 中使用/设置截断命令中的选择器?

java - JRE-9 deprecate browser plug-in - web start (JNLP) 可以直接在 JRE-9 中运行吗?

java - Java 中的两条腿 OAuth2 示例?

java - Spring Boot 连接时 MySQL 崩溃并显示 "buffer overflow detected"

java - 检测 Java 9+ 运行时模块

java - Android Studio 3 是否支持 Java 9 进行 Android 开发?如果支持,支持 Java 9 的哪些特性?

java - 确定 lambda 表达式在 Java 中是无状态的还是有状态的