java.util.ServiceLoader类创建对象

这个类是jdk1.6版本给出的类,它也是对对象初始化的一种实现方式。这样用户就不需要显示的通过new 去创建对象了。

 

使用方式:

1、定义接口;

2、定义接口的实现类;

3、在/META-INF/services/ 命名文件,以接口全路径命名,文件里放接口的具体实现类的全路径,多个实现类,可放多个。

 4、Demo 

 4.1 首相创建一个接口 

 

package com.apollo.client.java;
public interface ServiceInterface {

}

4.2 创建接口的实现类:

package com.apollo.client.java;

public class ServiceI implements ServiceInterface{

}

4.3 在/META-INF/services/ 下新建文件  

   文件名是接口的全路径名: com.apollo.client.java.ServiceInterface

   文件里是各个实现类的全路径名:com.apollo.client.java.ServiceI

 4.4 编写测试类:

package com.apollo.client.java;

import java.util.Iterator;
import java.util.ServiceLoader;


public class ServiceLoaderTest {

	public static void main(String[] args) {
	//1、加载src/main/resources/META-INF/servcies包下以接口ServiceInterface全路径命名的文件;
		  ServiceLoader<ServiceInterface> loader = ServiceLoader.load(ServiceInterface.class);
		  //2、获取文件里的内容(接口ServiceInterface的实现类的全路径)
		  Iterator<ServiceInterface> sdIterator = loader.iterator();
		  //3、遍历所有实现类的对象
		  while(sdIterator.hasNext()){
			  System.out.println(sdIterator.next());
		  }
		  
	}
}

这样就可以创建接口的各个实现类,实际业务代码很少这样用,因为我们使用工厂方法完全可以替代上面创卷对象的方式.

在apollo源码中使用到这个知识点去创建对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值