持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情
Java9正式发布于2017年9月21日,它带来了很多新的特性,其中最重要的改动就是Java平台模块系统的引入。
平台模块系统
Java9的平台模块系统,是把模块化开发引入了Java平台中,在引入之后,JDK被重新组织成 94 个模块。这样我们的应用就可以根据自身需要依赖对应的模块,极大滴减少了Java运行时环境的大小。
创建模块
创建下面两个Module
编写module-info.java
module-info.java文件用来描述当前模块的特征,一般包含以下内容:
- 模块导出的包:使用 exports 可以声明模块对其他模块所导出的包。(ModuleA)
- 模块的依赖关系:使用 requires 可以声明模块对其他模块的依赖关系。(ModuleB)
- 服务的提供和使用。 ModuleA声明对其他模块导出的包。
module ModuleA {
exports com.module.a;
}
ModuleB声明依赖ModuleA。
module ModuleB {
requires ModuleA;
}
跨模块调用
虽然ModuleAMain.java在ModuleA中,但是这样依赖之后,我们就可以跨模块使用。
public static void main(String[] args) {
new ModuleAMain().printName();
}
私有接口方法
Java8中引入了默认方法,仅仅需要使用 default 关键字来定义它们即可。在Java9中,对于接口还引入了私有方法。私有方法可以解决接口中默认方法与静态方法代码重复的问题。
interface Interface {
default void methodA() {
System.out.println("methodA...");
commons();
}
default void methodB() {
System.out.println("methodB...");
commons();
}
private void commons() {
System.out.println("commons");
}
}
首先定一个私有的方法,把重复部分的代码抽离出来。然后在methodA与methodB方法内部去调用。
当我们使用该接口的时候会发现私有方法只能在本类中调用,这里包括接口的实现类也不能调用。