1. 反射
(1)反射机制
反射机制:Java反射机制是在运行状态中,对于任意一个类,如果知道一个类的名称,都能够知道这个类的所有属性和方法;对于任意一个对象,如果知道一个实例对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。
(2)反射的使用
获取Class对象的三种方式:
- 使用Class.forName(“类路径名称”)静态方法:将字节码文件加载到内存中,返回Class对象。多用于配置文件,将类名配置在文件中,读取文件加载类。
- 使用类的.class方法:获取对象。多用于参数的传递。
- 使用实例对象的getClass()方法:getClass方法在Object类中定义着。用于对象字节码的获取。
(3)Class.forName 和ClassLoader区别
- ClassLoader是类加载器,通过一个类的全限定名来获取描述此类的二进制字节流,遵循双亲委派模型,将.class文件加载到jvm中,不会执行static中的内容(会先赋值为零值),只有在newInstance才会执行static块。
- class.forName()方法内部实际上也是调用的ClassLoader来实现,但会对类进行初始化,执行类中的静态代码块,以及对静态变量的赋值等操作。
关于反射其他详细知识:https://blog.csdn.net/a745233700/article/details/82893076