java.util.ServiceLoader使用

来源:互联网 发布:社交网络网盘 编辑:程序博客网 时间:2024/05/22 08:10

首先定义一个接口,具体如下:

public interface IService {      public String sayHello();            public String getScheme();  } 
该接口有两个子类,分别为HDFSService和LocalService:

public class HDFSService implements IService {        @Override      public String sayHello() {          return "Hello HDFS!!";      }        @Override      public String getScheme() {          return "hdfs";      }  }  public class LocalService implements IService {        @Override      public String sayHello() {          return "Hello Local!!";      }        @Override      public String getScheme() {          return "local";      }    } 

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

org.hadoop.java.HDFSService  
org.hadoop.java.LocalService 

所有的实现和配置都已经完成,下面写一个测试类来看一下结果:

public class ServiceLoaderTest {        /**     * @param args     */      public static void main(String[] args) {          //need to define related class full name in /META-INF/services/....          ServiceLoader<IService> serviceLoader = ServiceLoader                  .load(IService.class);          for (IService service : serviceLoader) {              System.out.println(service.getScheme()+"="+service.sayHello());          }      }    } 

来源:Linux社区  作者:kokojhuang

0 0