JDK 新特性
模块化
-
概述:
-
JDK 9 开始,JRE 自己就拆分为了很多个小模块,而不是每次都加载全部的核心类库等。
-
我们使用模块化的方式是:
-
每个模块本身相互独立,一个模块中的类直接
import
另一个模块下的包或类是不允许访问的。 -
每个模块在 src 根目录下放置一个 module-info.java 配置文件,由配置文件中的内容规定各个模块之间的交互信息。
module 模块名 { ... }
-
-
-
module-info.java 中导出与依赖的语法:
- 在 module-info.java 中使用
exports 包名;
来表示对外提供的包; - 在 module-info.java 中使用
requires 模块名;
来表示需要依赖的模块;
- 在 module-info.java 中使用
-
模块服务的使用:
-
一方面,服务提供者模块可以在配置文件中指定使用接口的实现类:
在配置文件中导出接口所在包,并声明使用哪个类作为它的实现类提供服务,如:
import com.serv.SerItf; import com.serv.impl.*; module MyFront { exports com.serv; provides SerItf with A; }
-
一方面,服务使用者模块面向服务提供者模块的接口编程即可;
-
在配置文件中声明对该接口所在包的依赖,并声明要使用该接口的服务,如:
import com.serv.SerItf; module MyAfter { requires MyFront; uses SerItf; }
-
在代码中的获得接口实现类对象的方式如:
ServiceLoader.load(要使用的接口.class).iterator().next()
-
-