Java反射实战:动态操作Car类属性

已知一个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());
        }
    }
}
相关推荐
星核0penstarry2 分钟前
DeepSeek-V4-Flash 正式公测:大模型行业进入「极速平价普惠时代」
java·开发语言·人工智能
xieliyu.30 分钟前
Java 线程池入门详解:线程池基础定义 + ThreadPoolExecutor 全参构造方法逐参数解析
java·开发语言·idea·javaee
老白干3 小时前
jjwt 0.9.1 在 JDK 11+ 上的两个“坑”与完整解决方案
java·python·log4j
圆山猫9 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
城管不管10 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
IT小白杨10 小时前
从环境制备到自动化工作流:多账号运营的工程化架构拆解
java·经验分享·自动化·安全架构·指纹浏览器
豆瓣鸡10 小时前
算法日记 - Day3
java·开发语言·算法
萧瑟余晖11 小时前
Java深入解析篇九之NIO详解
java·网络·nio
The Chosen One98511 小时前
高进度算法模板速记(待完善)
java·前端·算法
极光代码工作室13 小时前
基于SpringBoot的课程预约系统
java·springboot·web开发·后端开发