当前位置: 首页 > 面试题库 >

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

江礼骞
2023-03-14
问题内容

带有 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;
}

结果带有编译时错误。

希望能帮助到你。



 类似资料:
  • 问题内容: 我参与开发一个Java项目,该项目使用一些C ++组件,因此我需要Jacob.dll。(在Windows 7上) 无论我把Jacob.dll放在哪里,我都在不断获取。 我在寻找可能的决定,而到目前为止尚未尝试的决定是设置LD_LIBRARY_PATH变量,指向.dll文件。 我经验不足,不熟悉该变量的含义和用法-您能帮我吗? 问题答案: 通常,您必须在JVM的命令行上进行设置:

  • 问题内容: 经常出现在Python模块中。即使阅读了Python的文档,我也不明白它的用途以及使用时间/方式。 有人可以举例说明吗? 关于我收到的基本用法的一些答案似乎是正确的。 但是,我需要了解有关工作原理的另一件事: 对我来说,最令人困惑的概念是当前的python版本如何包含未来版本的功能,以及如何使用当前版本的Python成功地编译使用未来版本的功能的程序。 我猜想当前版本包含了将来的潜在功

  • 使用它来分析C或C++中的代码? 使用它来分析x86汇编程序中的代码?

  • 问题内容: 我想创建一个Android应用程序,以作者身份上传我的大学笔记,任何人都可以下载它。我读到firebase可以帮助我解决这个问题。任何人都可以参考一下来解释什么是firebase,以及如何使用它。谢谢! 问题答案: Firebase团队成员在这里。 tl; dr- 阅读此快速入门,观看此视频。使用FirebaseUI。 Firebase是用于移动和Web应用程序的平台。 Firebas

  • 我读了很多关于@JoinColumn的文章,但我仍然不明白它背后的想法。 病人床 车辆表 我一直在读这篇文章,但我仍然感到困惑。JPA JoinColumn与mappedBy

  • 问题内容: 我已经阅读了很多有关@JoinColumn的内容,但是我仍然不明白它的含义。 患者表 车辆表 患者分类 车辆类别 Vehicle Class ---- Entity @JoinColumn(name=”patient_id”) ---- annotation private Patient patient ----field ``` 会说吗?该车辆实体有一个外键到患者实体命名patie