title | date | tags | category | description | ||
---|---|---|---|---|---|---|
Java9_模块化 |
2018-10-11 20:33:00 -0700 |
|
|
Java9_模块化 |
module one {
}
module two {
}
package com.hlj.java9.can;
public static class UtilCan {
public void can(){
System.out.println("can");
}
}
package com.hlj.java9.cannot;
public static class UtilCanNot {
public void canNot(){
System.out.println("canNot");
}
}
module one {
//导出可用包
exports com.hlj.java9.can;
}
module two {
requires one;
}
package com.hlj.java9.use;
import com.hlj.java9.can.UtilCan;
//import com.hlj.java9.cannot.UtilCanNot; //导入了,但是报错
public class Use {
public static void main(String[] args) {
UtilCan.can();
// UtilCanNot.canNot(); 可以导入,但是编译不成功
}
}
### 3.1、创建接口和实现类
package com.hlj.java9.api;
public interface MyServiceInter {
void method();
}
package com.hlj.java9.api.impl;
import com.hlj.java9.api.MyServiceInter;
public class MyServiceInterImpl implements MyServiceInter {
@Override
public void method() {
System.out.println("接口实现类");
}
public static void staticImpl(){
System.out.println("接口实现类中自己定义的静态方法");
}
}
package com.hlj.java9.api.impl;
import com.hlj.java9.api.MyServiceInter;
public class MyServiceInterImplTwo implements MyServiceInter {
@Override
public void method() {
System.out.println("第二个接口实现类");
}
}
import com.hlj.java9.api.MyServiceInter;
import com.hlj.java9.api.impl.MyServiceInterImpl;
import com.hlj.java9.api.impl.MyServiceInterImplTwo;
module one {
//导出可用包
exports com.hlj.java9.can;
//对外提供的接口服务 ,下面指定的接口以及提供服务的impl,如果有多个实现类,用用逗号隔开
exports com.hlj.java9.api;
provides MyServiceInter with MyServiceInterImpl, MyServiceInterImplTwo;
}
import com.hlj.java9.api.MyServiceInter;
module two {
requires one;
//使用接口的名称 ,上面已经导入了one模块了
uses MyServiceInter ;
}
package com.hlj.java9.Consumer;
import com.hlj.java9.api.MyServiceInter;
//import com.hlj.java9.api.impl.MyServiceInterImpl;
import java.util.ServiceLoader;
/**
* @Desc:
* @Author HealerJean
* @Date 2018/10/10 上午10:23.
*/
public class ConsumerUse {
public static void main(String[] args) {
//专门用来提供服务的类
ServiceLoader<MyServiceInter> loader = ServiceLoader.load(MyServiceInter.class);
//所有的实现类
for(MyServiceInter service:loader){
service.method();
}
// MyServiceInterImpl.staticImpl(); ont中export必须是第一层包,不可以套多层
}
}
感兴趣的,欢迎添加博主微信, 哈,博主很乐意和各路好友交流,如果满意,请打赏博主任意金额,感兴趣的在微信转账的时候,备备注您的微信或者其他联系方式。添加博主微信哦。 请下方留言吧。可与博主自由讨论哦
支付包 | 微信 | 微信公众号 |
---|---|---|