zoukankan      html  css  js  c++  java
  • java.util.ServiceLoader的用法

    在很多开源组件里经常会看到java.util.ServiceLoader的使用,这里给大家介绍下怎么通过ServiceLoader找到一个接口的所有实现类。

    我们新建一个接口Hello

    public interface Hello {
    String say();
    }
    

    然后创建一个实现类DefaultHello

    public class DefaultHello implements Hello {
    
        @Override
        public String say() {
            return "Default Hello";
        }
    }
    

    然后在META-INF/services目录下创建一个文件,文件名是接口全称,这里是com.proxy.Hello
    内容是具体实现类的全限定名com.proxy.DefaultHello
    再执行如下代码

    public class ServiceLoaderDemo {
    
        public static void main(String[] args) {
    
            Hello obj = ServiceLoader.load(Hello.class).iterator().next();
    
            System.out.println(obj.say());
    
        }
    }
    

    就可以得到结果
    Default Hello
    说明ServiceLoader.load这个方法返回了DefaultHello对象,在文件里我们也可以写多个实现类,一行一个,相应用iterator遍历。

  • 相关阅读:
    UVA
    codeforces #371div2 B
    POJ-3278 Catch That Cow
    巴士博弈
    权势二进制
    HDU
    SQL 函数
    SQL 查询语句×45
    SQL 触发器
    SQL 连接查询
  • 原文地址:https://www.cnblogs.com/developerY/p/4932232.html
Copyright © 2011-2022 走看看