java反射

概念:
java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法。对于任意一个对象,都能够调用它任意一个方法和属性。这种动态的获取信息以及动态调用对象的方法的功能成为java语言的反射机制。
要想解刨一个类,必须先获取到该类的字节码文件对象。使用的就是Class类中的方法。
反射就是把java类中的各种成分映射成一个个的java对象。

Class类的实例表示正在运行的java应用程序中的类和接口。Class没有公共构造方法。Class对象是在加载类的时候由java虚拟机以及通过调用类加载器中的方法自动构造的。不需要自己创建,JVM创建。
获取Class对象的三种方式:
Object.getClass();
任何数据类型(包括基本数据类型)都有一个"静态"的class属性。
Class类的静态方法:forName

优缺点:
反射提高了程序的灵活性和扩展性,降低耦合性,提高自适应能力。允许程序创建和控制任何类的对象,无需提前编码目标类。实现动态创建对象和编译。反射其实就是程序能够自检查自身信息。
性能问题,使用反射是一种解释操作,用于字段和方法接入时要慢于直接代码。使用反射会模糊程序内部逻辑,反射绕过了源代码的技术,维护困难,反射代码比相应的直接代码更复杂。
反射主要应用在灵活性和扩展性要求很高的系统框架上。

应用:
1)使用JDBC连接数据库时使用Class.forName()通过反射加载数据库驱动程序
2)Spring解析xml配置的bean,得到实例。
3)动态配置实例属性

原文地址:https://www.cnblogs.com/DreamFather/p/11686068.html