title
Java9_模块化
date
2018-10-11 20:33:00 -0700
tags
category
description
Java9_模块化
1、必须是java文件夹下面才可以创建module-info.java,添加两个maven。module项目。分别为one和two
2.1、设置modulej级别为9(我的idea初始为5)
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 ;
}
2.4、two中进行引入,如果发现为红报错,则,alt+enter进行one包的引入
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 ("第二个接口实现类" );
}
}
3.2、one module-info.java 服务开始提供
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 ;
}
3.3.1、two module-info.java
import com .hlj .java9 .api .MyServiceInter ;
module two {
requires one ;
//使用接口的名称 ,上面已经导入了one模块了
uses MyServiceInter ;
}
3.3.2、开始测试使用 下面中的注释掉的解答下export必须是第一层才能够导出
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必须是第一层包,不可以套多层
}
}
代码下载
感兴趣的,欢迎添加博主微信, 哈,博主很乐意和各路好友交流,如果满意,请打赏博主任意金额,感兴趣的在微信转账的时候,备备注您的微信或者其他联系方式。添加博主微信哦。
请下方留言吧。可与博主自由讨论哦