反射的概念:
在官方文档中定义反射:在反射机制的API中,我们可以知道,反射通常是由程序来实现,而这些程序就是用来检查或修改,在java虚拟机中运行的应用程序的的运行时行为。
说白了就是反射可以帮助我们在运行过程中获取对象的类型信息,那我们如何获取一个对象对应得反射类class呢?
三种获取反射类的方法
通过getClass
在Java中,每一个Object类都有一个对应得getClass方法
String s = "hello word"
;
Class<?> c = s.getClass ( )
;
通过forName方法
我们可以通过class的静态方法forName来实现
Class <?> c = Class.forName(" java.Lang.String " )
;
使用.class
我们也可以直接使用.Class
Class <?> c = String.class
;
知道了获取反射类的方法,那现实做项目中,有哪些可以用到反射类呢?
反射机制的用途
- Spring中的IOC/DI是反射
- javaBean和JSP之间的调用是反射
- JDBC中的classforName是反射
- Structs中的formBean和页面之间也是通过反射
- hibernate的find( Class clazz ) 也是反射。。。。。