从new对象到BeanFactory

涉及知识点

  1. 泛型

  2. 反射

从new说起

现在我们有如下两个功能类:

/** 类A */
public class A {
	/**
	 * 模拟一段业务逻辑
	 */
	public void showInfo() {
		System.out.println("A类showInfo");
	}
}

/** 类B */
public class B {
	/**
	 * 模拟一段业务逻辑
	 */
	public void showInfo() {
		System.out.println("B类showInfo");
	}
}

在类DITest中我们要测试A、B两个类的业务逻辑,代码如下:

/** 以前我们业务逻辑测试方法 */
public class DITest {
	private static A a = new A();
	private static B b = new B();

	public static void main(String[] args) {
		a.showInfo();
		b.showInfo();
	}
}

通过new方法我们得到了两个类的实例,而且完成了测试:

A类showInfo
B类showInfo

现在我们要测试100个或者更多的类,如果按照上面的方式我们要new100次或者更多,那么为什么不来一支烟思考一下有没有什么更便捷的方法呢?当然有,在JDK1.5的时候引入了泛型。

下面我们通过泛型+反射来解决100次new的困扰:

/** 解放new */
public class DITest {

	/** 对象生成工厂 */
	public static <T extends Object> T getNewInst(Class<T> c) throws Exception {
		return c.getConstructor().newInstance();
	}

	public static void main(String[] args) throws Exception {
		getNewInst(A.class).showInfo();
		getNewInst(B.class).showInfo();
	}
}

测试输出结果:

A类showInfo
B类showInfo

上面的例子里面,我们通过了getNewInst()方法,传入要得到的Class类,然后我们就得到了这个Class对应的对象,我们可以简单的将这个方法是一个类工厂,可以用来实例化给定的类,后续我们会将这个方法扩展为类,在她的基础上,我们将建立整个BeanFactory的功能体系。

注意:getNewInst()目前只能初始化有默认构造函数的类

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值