java为什么要使用反射

一.提出问题
new一个对象的速度要比反射的newInstance快,为什么还要使用反射进行生成对象?
解答1:
1.举例:
假设有一个场景:一共有50个Excel模板,每一个Excel模板的字段不同、格式不同、填写的内容也不同,后台需要根据用户上传的模板来读取里面的内容再进行后台逻辑的处理。
2.解决方案:
①.常规的根据用户上传的模板做不同的判断,对不同字段进行不同的处理,例如:

	if(excel1){
	new Excel1()
	}if(excel2){
	new Excel2()
	}.....if(Excel50){
	new Excel50()
	}

弊端:50个if 处理要命
②.使用反射读取Excel模板编号再做逻辑处理

ExcelTemp clazz = Class.forName(ExcelTempCode).newInstance();  
 也可以使用Spring来实现这一块,更简单一些
 处理类实现ApplicationContextAware接口 然后得到当前容器的ApplicationContex对象 再使用getBean方法获取对应的类  
 在注入ExcelTemp 的时候要使用@Component("Excel01")这样去定义好bean的名称

解答2:框架
我们使用框架的目的在于简化开发,形成规范,这个规范就在于如何让所有开发人员在开发出业务代码的时候还能适配框架。
拿Spring来说,我们开发人员千千万万,业务逻辑千千万万,要new的对象更是千千万万,Spring不可能预料的到我们所有人所创建的对象并把它放到他的框架本身里面,所以就有了BeanFactory,我们要使用什么对象就通过(此处只举例XML形式)XML配合getBean(BeanName)来获取就可以了。

 <bean id="myTestImpl" class="com.lixiao.demo.spring.service.MyTestImpl"/>
ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
Object myTestImpl = context.getBean("myTestImpl");
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值