美文网首页
浅析jdk ServiceLoader作用

浅析jdk ServiceLoader作用

作者: 境里婆娑 | 来源:发表于2019-05-26 19:54 被阅读0次

主要是从META-INF/services这个目录下的配置文件加载给定接口或者基类的实现,ServiceLoader会根据给定的类的full name来在META-INF/services下面找对应的文件,在这个文件中定义了所有这个类的子类或者接口的实现类,返回一个实例。

首先定义一个接口

public interface PayService {

    void pay();
}

定义两个实现类

public class AliPayService implements PayService {
    @Override
    public void pay() {
        System.out.println("支付宝支付");
    }
}
public class WxPayService implements PayService {
    @Override
    public void pay() {
        System.out.println("微信支付");
    }
}                            

需要在META-INF/services下以PayService 这个类的全名来新建立一个文件,文件中的内容为两个实现类的全名,如下

com.sl.service.AliPayService
com.sl.service.WxPayService
image.png
public class Test1 {

    public static void main(String[] args) {
        //System.out.println(BigInteger.probablePrime(10,new Random()));
        ServiceLoader<PayService> load = ServiceLoader.load(PayService.class);
        for (PayService payService:load) {
            payService.pay();
        }
    }
}

相关文章

网友评论

      本文标题:浅析jdk ServiceLoader作用

      本文链接:https://www.haomeiwen.com/subject/gzvftctx.html