介绍
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任何一个对象都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java反射。
两种方式获取Class对象
- 具体类.class
- Class.forName(xxx)
静态编译:在编译时确认类型,绑定对象
动态编译:运行时确定类型,绑定对象
反射优缺点
优:运行期类型的判断,动态加载类,提高代码灵活性
缺:反射相当于一系列解释操作,比直接运行java代码慢很多。另外反射动态操作类的属性增加了类的安全隐患
反射的应用场景
JDBC连接数据库使用Class.forName();
Spring中IOC和AOP都和反射有关