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()); } }
上一篇: MySql隐含的列说明改变
下一篇: 安装smtp和POP3有关问题