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());
        }
    }
}
相关推荐
KaMeidebaby3 分钟前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
醉城夜风~1 小时前
Java详解经典算法题:接雨水(三种实现方案+原理剖析)
java·开发语言·算法
数智化转型推荐官3 小时前
2026统一身份管理系统五大发展趋势解读
java·运维·微服务
看菜鸡互3 小时前
探索用 SlideML 让大模型生成 PPT 的实验方法
java·运维
程序员张34 小时前
SpringBoot集成BCrypt密码加密库
java·spring boot·后端
闲猫4 小时前
Spring AI Agentic 模式(第1部分):Agent Skills——模块化、可复用的能力
java·人工智能·spring
源图客4 小时前
云途物流API开发-鉴权认证(Java)
java·网络·python
liguojun20255 小时前
篮球馆自动计时收费系统:从规则配置到自动结算的全流程拆解
java·大数据·运维·人工智能·物联网·1024程序员节
952365 小时前
RabbitMQ-基础操作
java·spring boot·分布式·后端·spring·rabbitmq
卓怡学长6 小时前
w266基于spring boot + vue 圣地延安美食乐享系统
java·数据库·vue.js·spring boot·spring·intellij-idea