计算机系统应用教程网站

网站首页 > 技术文章 正文

Java 9揭秘-模块依赖(四) java9模块化为啥没大规模使用

btikc 2024-10-18 04:40:57 技术文章 7 ℃ 0 评论

有限导出(Qualified Exports)

假设你正在开发由多个模块组成的库或框架。 其中有一个模块中的包含API,仅供某些模块内部使用。 也就是说,该模块中的包不需要导出到所有模块,而是其可访问性必须限于几个命名的模块。 这可以使用模块声明中的限定的export语句来实现。 一般语法如下:

exports <package> to <module1>, <module2>...;

这里,<package>是当前模块要导出的包的名称,<module1>,<module2>等是可以读取当前模块的模块的名称。 以下模块声明包含非限定导出和限定导出:

module com.jdojo.common {
 // An unqualified exports statement exports com.jdojo.zip;
 // A qualified exports statement exports com.jdojo.internal to com.jdojo.address;
}

com.jdojo.common模块将com.jdojo.zip包导出到所有模块,而com.jdojo.internal包仅适用于com.jdojo.address模块。 所有的模块在读取com.jdojo.common模块时都可以读取com.jdojo.zip模块中的所有公共类。 但是,后一种写法,所有com.jdojo.internal包下的公共类只能被com.jdojo.address模块访问。

你也可以在JDK 9中找到许多有限导出的示例。java.base模块包含导出到几个命名模块的“sun.”和“jdk.”软件包。 以下命令打印java.base的模块声明。 输出显示在java.base模块中使用的一些限定的导出:





不是JDK 9中的所有内部API都已封装。在“sun.*” 一些关键的内部API包内,例如sun.misc.Unsafe类,由JDK 9之前的开发人员使用,并且仍然可以在JDK 9中访问。这些包已经被放置在jdk中。 以下命令打印jdk.unsupported模块的模块声明:

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表