Java反射:
是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且都能够调用它的任意一个方法;
反射原理:
反射首先是能够获取到Java中的反射类的字节码,然后将字节码中的方法,变量,构造函数等映射成相应的Method、Filed、Constructor等类。
如何得到Class的实例:
使用场景:
●开发通用框架-反射最重要的用途就是开发各种通用框架。很多框架(比如 Spring)都是配置化的(比如通过XML文件配置Javabean、Filter等),为了保证框架的通用性,需要根据配置文件运行时动态加载不同的对象或类,调用不同的方法。
●动态代理-在切面编程(AOP)中,需要拦截特定的方法,通常,会选择动态代理方式。这时,就需要反射技术来实现了。JDK:spring默认动态代理,需要实现接口;CGLIB:通过asm框架序列化字节流,可配置,性能差;
●自定义注解-注解本身仅仅是起到标记作用,它需要利用反射机制,根据注解标记去调用注解解释器,执行行为。