*Java的反射机制
*是,在运行状态中,对于任意的一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息及动态调用方法的功能成为java的反射机制。
*获取字节码信息的四种方式:
- 1.通过内置的class属性 类名.class
2. 对象.getclass()
3.调用Class类提供的静态方法forName()Class.forName(“全限定名”)
4.通过类加载器加载 getClassLoad() 再loadClass(“权限的名”)
在这里插入代码片
```package com.reflect;
public class Test {
public static void main(String[] args) throws ClassNotFoundException {
// 1.通过.class
Class<Car> cls1 = Car.class;
// 2.通过 对象.getClass
Car car = new Car();
Class cls2 = car.getClass();
// 3.通过Class.forName()
Class<?> cls3 = Class.forName("com.reflect.Car");
// 通过classload获取
ClassLoader loader = Test.class.getClassLoader();
Class cls4 = loader.loadClass("com.reflect.Car");
System.out.println(cls1==cls2); // result:true
System.out.println(cls2==cls3); // result:true
System.out.println(cls3==cls4); // result:true
}
}
```java
在这里插入代码片
通过Class.froName创建出来的方式是最常用的
四种方式没敲过的还是得动手敲一下,比如第二种是对象.getclass,而不是第一种类名.class
可以发现通过四种方式创建出来的都是一样的