Java 9 中 module-info 文件中的“export”语句有什么作用?


一个**模块**是**代码**和**数据**的组合,它具有名称,声明对其他模块的依赖关系,导出包含可从模块外部访问的公共类型的包,并指定它使用的服务或它提供的服务实现。所有这些都在**module-info.java**文件中指定,该文件包含在模块的根目录中。

在“**module-info.java**”文件中可以使用两种类型的“**export**”语句。

1) **export <package>:** 默认情况下,模块的**public**类型不再在模块外部可见。要使给定包的公共类型对其他模块可见,必须**导出**此包。请记住,我们是在包级别,而不是在类型的单元级别。但是,不会导出子包。

我们需要允许其他模块使用包 **tp.com.tutorialspoint.model** 的类和接口,我们可以如下编写:

module com.tutorialspoint.model {
   exports tp.com.tutorialspoint.model;
}

非常重要的是要理解,一个包只能存在于一个模块中。否则,我们会得到如下错误:

Error:(1, 1) java: package exists in another module:


2) **export <package> to <module>:** 通过将某些包的可见性降低到有限的模块列表,我们可以加强模块的安全性:只有列出的模块才能访问这些类。

module com.tutorialspoint.model {
   exports tp.com.tutorialspoint.model
      to com.tutorialspoint.gui;
}

更新于:2020年4月28日

2K+ 浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告