java - 什么是 Java 9 中的开放模块以及如何使用它?

标签 java java-9 java-module module-info

前面有 open 关键字的模块和没有它的模块有什么区别?例如:

open module foo {
}

module foo {
}

最佳答案

为了提供对模块的反射访问,Java 9 引入了 open 关键字。

您可以通过在模块声明中使用 open 关键字来创建开放模块。

开放模块向其他模块授予对其所有包的反射访问权限。

例如,如果您想使用一些严重依赖反射的框架,例如Spring、Hibernate等,则可以使用该关键字为其启用反射访问。

您可以通过在包声明中使用 opens 语句来启用对模块的指定包的反射访问:

module foo {
    opens com.example.bar;
}

或者在模块声明中使用open关键字:

open module foo {
}

但请记住,您不能将它们组合起来:

open module foo {
    opens com.example.bar;
}

结果出现编译时错误。

希望有帮助。

关于java - 什么是 Java 9 中的开放模块以及如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46482364/

相关文章:

java - 读取 XML 节点 Java 时出现 NullPointerException

java - 如何导出带有批处理文件的java项目

java - 如何在 java 9 中声明模块

javac --add-modules 添加多个模块

java 10 gradle 项目 : automatic module not found

Java - 将 JButton 数组添加到 JFrame

java - MySQL > java.sql.SQLException : Plugin '*765C23FCC8127A2234DBCFB6E5207D82ED86264E' is not loaded

oracle - 适用于 Solaris X64 的 Java9

java - 修补模块引发模块未找到错误

java - 既然 tools.jar 在 Java 9 中被分解了,sun.misc.Perf 去了哪里