Java9相关特性

51 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情

Java9正式发布于2017年9月21日,它带来了很多新的特性,其中最重要的改动就是Java平台模块系统的引入。

平台模块系统

Java9的平台模块系统,是把模块化开发引入了Java平台中,在引入之后,JDK被重新组织成 94 个模块。这样我们的应用就可以根据自身需要依赖对应的模块,极大滴减少了Java运行时环境的大小。

创建模块

创建下面两个Module 微信截图_20220608232829.png

编写module-info.java

module-info.java文件用来描述当前模块的特征,一般包含以下内容:

  1. 模块导出的包:使用 exports 可以声明模块对其他模块所导出的包。(ModuleA)
  2. 模块的依赖关系:使用 requires 可以声明模块对其他模块的依赖关系。(ModuleB)
  3. 服务的提供和使用。 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方法内部去调用。

微信截图_20220608234301.png

当我们使用该接口的时候会发现私有方法只能在本类中调用,这里包括接口的实现类也不能调用。

微信截图_20220608234436.png