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


问题内容

带有 open 关键字的模块之前和不带有 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;
}

结果带有编译时错误。

希望能帮助到你。