- 定义一个接口
interface IDemoService {
void say(String name);
}
- 定义该接口的实现类
class DemoServiceImpl implements IDemoService {
@Override
public void say(String name) {
System.out.println("hello " + name);
}
}
- 在META-INF/services下面定义文件
文件名:接口IDemoService的全限定名
文件内容: 接口IDemoService的实现类DemoServiceImpl的全限定名 - 利用ServiceLoader加载读取并迭代调用
ServiceLoader<IDemoService> loader = ServiceLoader.load(IDemoService.class);
Iterator<IDemoService> iterator = loader.iterator();
while (iterator.hasNext()) {
IDemoService service = iterator.next();
service.say("wangyong");
}
参考