美文网首页
浅析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