欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java反射机制 创建单例工厂

程序员文章站 2022-05-28 19:13:04
...
package Reflect;
/*如何编写工具类:
 * 方法一:
 * 1.把工具方法做成非static方法,
 * 2.把工具类做成单例的。
 * 那么要调用工具方法,必须先得到工具类。再调用方法
 * 方法二:
 * 1.把工具方法做成static方法
 * 2.把工具类所有构造器全部私有化,或者把工具加上abstract的。
 * 这么做的目的就是为了全部是类去调用工具方法。
 * 
 * */
//根据反射的对象工厂,专门用来生成对象。为了使其他方法类也可以使用该方法,特意将该方法抽取到该类中。
//单例模式:Enum
public enum BeanFactory {
	INSTANCE;
	public  <T>T getBean(String className,Class<T> checkType){						
		try {
			Class<T> clz=(Class<T>) Class.forName(className);
			Object obj = clz.newInstance();
			//需要检查checkedType是否是obj的字节码对象。
			if(!checkType.isInstance(obj)){
				throw new IllegalArgumentException("对象和类型不兼容");
			}
			return (T)obj;
		} catch (Exception e) {			
			e.printStackTrace();
		} 
		return null;
		
	}
}

 

调用测试如下:

import java.util.Date;

public class CreateInstanceDemo {
	public static void main(String[] args) throws Exception {
		Date d= BeanFactory.INSTANCE.getBean("java.util.Date", Date.class);
		System.out.println(d.toLocaleString());
		
	}
}

 

相关标签: java 反射