`
从此醉
  • 浏览: 1047176 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

JDK 1.6 新特性介绍之:ServiceLoader

 
阅读更多

今天在看Hadoop源代的时候发现,在FileSystem中用到了java.util.ServiceLoader这个类来从配置文件中加载子类或者接口的实现类。以前从来没有使用过这个类,进去大概看了一下具体的实现。主要是从META-INF/services这个目录下的配置文件加载给定接口或者基类的实现,ServiceLoader会根据给定的类的full name来在META-INF/services下面找对应的文件,在这个文件中定义了所有这个类的子类或者接口的实现类,返回一个实例。

下面以一个具体的例子来说明一下ServiceLoader的具体使用,类似Hadoop FileSystem中的实现。

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

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"; 
    } 
 
} 

需要在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()); 
        } 
    } 
 
} 




分享到:
评论

相关推荐

    JDK1.6新特性与实战例子

    JDK6的新特性之一:Desktop类和SystemTray类 JDK6的新特性之二:使用JAXB2来实现对象与XML之间的映射 JDK6的新特性之三:理解StAX StAX(JSR 173)是JDK6.0中除了DOM和SAX之外的又一种处理XML文档的API JDK6的新特性...

    JDK 1.6 绿色版 4

    JDK 1.6 绿色版,我想很多人可能都需要,这是分卷4,剩下的分卷地址如下: JDK 1.6 绿色版 2 http://download.csdn.net/source/1502201 JDK 1.6 绿色版 3 http://download.csdn.net/source/1502209 JDK 1.6 绿色版...

    JDK1.6的九大新特性

    JDK1.6的九大新特性JDK1.6的九大新特性JDK1.6的九大新特性

    jdk1.6新特性 下载

    jdk1.6新特性 jdk1.6新特性 jdk1.6新特性jdk1.6新特性jdk1.6新特性jdk1.6新特性jdk1.6新特性

    java jdk1.6 新特性 jaxb2 demo

    java jdk1.6 新特性 jaxb2 demo

    苹果电脑安装jdk1.6 mac for jdk1.6 jdk6 安装版

    mac for jdk1.6 jdk6 安装版 里面有两个jdk1.6的安装包,都可以用 如果电脑上安装有1.7,1.8等高版本jdk就不要再下安装包了,安装包安装会报错 命令是这个:brew install java6或 brew install homebrew/cask-...

    JDK 1.6 绿色版

    JDK 1.6 绿色版,我想很多人可能都需要,这是分卷1,剩下的分卷地址如下: JDK 1.6 绿色版 2 http://download.csdn.net/source/1502201 JDK 1.6 绿色版 3 http://download.csdn.net/source/1502209 JDK 1.6 绿色版...

    aspose-words-15.8.0-jdk1.6

    aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-...

    jdk1.6的新特性

    jdk1.6的新特性,包含jdk1.6与jdk1.5的比较,对比出新特性,面试过程中常问题,现给出答案,请记住解压密码是http://www.nanyuebaiyi.com或者http://www.cndstv.com

    okhttp3.8源码使用jdk1.6重新编译_okhttp3.8.0-jdk1.6.zip

    1.okhttp3.8源码使用jdk1.6重新编译,已集成了okio,在javaweb项目中使用,未在安卓项目中使用 2.okhttp3.8源码使用jdk1.6重新编译_okhttp3.8.0-jdk1.6.jar

    Java6JDK1.6新特性总结大全附代码.docx

    Java6JDK1.6新特性总结大全附代码.docx

    okhttp包含okio(亲测可在jdk1.6环境运行)

    适合okhttp,okio JDK1.6:okhttp3.8.0-jdk1.6.jar JDK1.6+:okhttp-3.12.13.jar;okio-1.15.0.jar 适用于Java开发环境、使用OkHttp调用

    JDK1.6新特性搜集整理

    详细讲述JDK1.6所引入的新的功能,对开发着来说,可以进一步了解java的进展和方向。

    JDK1.6新特性说明.doc

    JDK1.6新特性说明.doc

    JDK 1.6 JDK 1.6 winxp专用 winxp专用

    JDK 1.6 JDK 1.6 JDK 1.6 JDK 1.6 JDK 1.6 winxp专用 winxp专用winxp专用winxp专用winxp专用winxp专用

    JDK1.6API文档

    JDK1.6API。java1.6开发文档,最新官网文档。满足java开发需求

    IBM JDK1.6 安装版

    IBM JDK1.6 安装版

    jdk1.6 源码jdk1.6 源码

    jdk1.6 源码

    Windows JDK 1.6 安装包

    Windows JDK 1.6 安装包,解压后直接双击安装,简单易用。 下面是Oracle官网对 Java 的介绍:Oracle Java is the #1 programming language and development platform. It reduces costs, shortens development time...

Global site tag (gtag.js) - Google Analytics