java.util.ServiceLoader的用法

在不少開源組件裏常常會看到java.util.ServiceLoader的使用,這裏給你們介紹下怎麼經過ServiceLoader找到一個接口的全部實現類。java

咱們新建一個接口Helloide

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遍歷。it

相關文章
相關標籤/搜索