模块化
模块的基本使用
- 模块的使用步骤
-
创建模块
-
在模块的 src 目录下新建一个名为 module-info.java 的描述文件,该文件专门定义模块名,访问权限,模块依赖等信息
- 描述性文件中使用模块导出和模块依赖来进行配置使用
-
模块中所有未导出的包都是模块私有的,不能在模块之外被访问
- 模块导出格式:
exports 包名;
- 模块导出格式:
-
一个模块要访问其他模块,必须明确指定依赖哪些模块,未明确指定依赖的模块不能访问
- 模块依赖格式:
requires 模块名;
注意:写模块名报错,需要按下 Alt + Enter 提示,然后选择模块依赖
- 模块依赖格式:
-
模块服务的使用
-
模块服务的使用步骤
-
在模块 A 下创建一个包 myInterface,在该包下提供一个接口 Inter
public interface Inter{ void run(); }
-
在 myInterface 包下创建一个包 myImpl,在该包下提供接口的实现类 Impl01
-
在模块 A 下的描述性文件中添加以下配置
- 模块导出:
exports myInterface;
- 服务提供:
provides Inter with Impl01
- 模块导出:
-
在模块 B 的描述性文件中添加以下配置
- 模块依赖:
requires A;
- 声明服务接口:
uses Inter;
- 模块依赖:
-
在模块 B 下的类中使用 Intet 接口提供的服务
// ServiceLoader:一种加载服务实现的工具 ServiceLoader<Inter> myInters = ServiceLoader.load(Inter.class); for (Inter i : myInters){ i.run(); }
-
接口组成更新
概述
-
接口的组成
-
常量
public static final
-
抽象方法
public abstract
-
默认方法(Java 8)
-
静态方法(Java 8)
-
私有方法(Java 9)
-
接口中的默认方法
-
定义格式:
public default 返回值类型 方法名(参数列表){}
-
注意事项:
- 默认方法不是抽象方法,可以被重写(不强制),重写的时候需要去掉 default 关键字
- public 可以省略,default 不能省略
接口中的静态方法
-
定义格式:
public static 返回值类型 方法名(参数列表){}
-
注意事项:
- 静态方法只能提供接口名调用,不能通过实现类名或对象名调用
- public 可以省略,static 不能省略
接口中的私有方法
-
概述:
- 当两个默认方法或者静态方法中包含一段相同的代码实现时,程序可以使用私有方法将相同的实现代码抽取成一个共性方法,而这个共性方法是不需要对外使用的,因此用私有隐藏起来。
-
定义格式:
private (static) 返回值类型 方法名(参数列表){}
-
注意事项:
- 默认方法可以调用私有的静态方法和非静态方法
- 静态方法只能调用私有的静态方法
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于