模块化
java轻量化运行
1. 模块的基本使用
模块中所有未导出的包都是模块私有的,他们是不能在模块之外被访问的
- 模块导出格式: exports 包名;
一个模块要访问其他的模块,必须明确指定依赖哪些模块,未明确指定依赖的模块不能访问
- 模块依赖格式: requires 模块名;
- 创建模块是在各个src包下创建的
Student类
package com.module1_01;
public class Student {
private String name;
private int age;
public void study(){
System.out.println("学生好好学习");
}
}
module module1 {
exports com.module1_01;//用Student类 导出Student的包名
}
package module2_01;
import com.module1_01.Student;
public class Demo {
public static void main(String[] args) {
//
Student s = new Student();
s.study();
}
}
2. 模块服务的使用
不同模块下 接口服务 的使用
package com.module1_03;
/*接口*/
public interface Interface {
void show();
}
package com.module1_03.InterfaceImpl;
/*接口的实现类*/
import com.module1_03.Interface;
public class CCZU implements Interface {
@Override
public void show() {
System.out.println("常州大学");//重写接口的方法
}
}
import com.module1_03.Interface;
import com.module1_03.InterfaceImpl.CCZU;
/*导出模块*/
module module1 {
exports com.module1_03;
exports com.module1_03.InterfaceImpl;
provides Interface with CCZU;// provides 接口 with 接口的实现类
}
接下来模块的使用
import com.module1_03.Interface;
/*导入模块*/
module module2 {
requires module1;// requires + 要用的module-info.java的名字
uses Interface;//use module1中的接口服务
}
package module2_01;
/*测试类 服务的使用 比较特殊*/
import com.module1_03.Interface;
import java.util.ServiceLoader;
public class Demo {
public static void main(String[] args) {
//加载服务
ServiceLoader<Interface> myservice = ServiceLoader.load(Interface.class);
//遍历服务
for (Interface i :
myservice) {
i.show();
}
}
}