Java基础加强——反射

反射

1.如何理解反射

反射是Java中特有的一种技术,是JAVA中自省特性的一种实现(对象运行时动态发现对象成员),可以基于此特性实现java的动态编程(例如对象创建,成员调用等).

2.反射的应用场景

1)框架中对象的构建.
a)mybatis映射元素的resultType,resultMap等
b)spring中的bean对象(,@Service,…)
2)框架中方法的调用.

a)对象set方法,get方法,…
b)spring mvc 控制层方法,…

3.案例分析

1)基于字节码对象获取无参构造方法对象,并构建类的实例对象.

	//基于类的字节码对象创建类的实例对象
	private static <T>T doCreateInstance(Class<T> cls) throws Exception{
		//1.获取类中的无参构造方法对象
		Constructor<T> con=cls.getDeclaredConstructor();
		//2.基于构造方法对象构建类的实例对象
		con.setAccessible(true);//设置构造方法可访问
		return (T)con.newInstance();//默认调用无参构造函数
	}

2)基于字节码对象获取带参构造方法对象,并构建类的实例对象.

	@SuppressWarnings("unused")
	private static <T>T doCreateInstance(
			Class<T> cls,//字节码对象
			Object[] args,//创建实例对象需要的实际参数
			Class<?>[] paramTypes)throws Exception {
		//1.获取构造方法对象
		Constructor<T> con=
		cls.getDeclaredConstructor(paramTypes);
		//2.基于构造方法对象构建类的实例对象
		return con.newInstance(args);
	}

4.总结

反射在框架中应用较多,另外在手写spring构建实例对象时,也多次用到反射。想要了解更详细的,可面向百度。部分内容摘自齐*的文档,在此向老师表达敬意。看过的小伙伴可以评论和支持哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值