首先定义一个接口:
package com.peter.sl;
public interface Sl {
public void say();
}
将接口打包成jar文件
新建一个工程,SlImpl实现接口Sl
package com.peter.sl;
public class SlImpl implements Sl {
@Override
public void say() {
System.out.println("this class is loaded by ServiceLoader");
}
}
工程下要求有META-INF/services/文件夹,此文件夹下有文件名为com.peter.sl.Sl即接口的全名,文件内容为实现类全名com.peter.sl.SlImpl,若有多个,换行分开即可。
测试一下:
package com.peter.sl;
import java.util.ServiceLoader;
public class ServiceLoaderTes {
public static void main(String[] args) {
ServiceLoader<Sl> loader = ServiceLoader.load(Sl.class);
for(Sl sl : loader){
sl.say();
}
}
}
输出:
this class is loaded by ServiceLoader