已知一个Car类
java
package com.heima.Hello;
public class Car {
public String brand = "宝马X5";
public int price = 500000;
public String color = "black";
@Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", price=" + price +
", color='" + color + '\'' +
'}';
}
}
关于这个 Car 类进行相关操作
java
package com.heima.Hello.reflection.class_;
import com.heima.Hello.Car;
import java.lang.reflect.Field;
public class Class02 {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException {
String classAllPath = "com.heima.Hello.Car";
// 1. 获取到 Car 类对应的 class 对象
// <?> 表示不确定的 class 对象
Class<?> cls = Class.forName(classAllPath);
// 2. 输出 class 对象
System.out.println(cls); // 显示 cls 对象,是哪个类的class对象
System.out.println(cls.getClass());// 输出运行类型 java.lang.Class
// 3. 得到包名
System.out.println(cls.getPackage().getName());
// 4. 得到全类名
System.out.println(cls.getName());
// 5. 通过 cls 创建对象实例
Car car = (Car) cls.newInstance();
System.out.println(car); // 调用 Car 类的 toString 方法
// 6. 通过反射获取属性
Field brand = cls.getField("brand");
System.out.println(brand.get(car)); // 获取属性值,宝马X5
// 7. 通过反射给属性赋值
brand.set(car, "奔驰E300L");
System.out.println(brand.get(car)); // 获取属性值,奔驰E300L
// 8. 获取所有的属性
System.out.println("======所有的字段属性======");
Field[] fields = cls.getFields();
for (Field f : fields) {
System.out.println(f.getName());
}
}
}