当前位置:网站首页 > Java基础 > 正文

菜鸟教程 java反射

 import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Constructor;

public class ReflectionExample {

    public static void main(String[] args) throws Exception {
        // 获取 Class 对象
        Class<?> clazz = Car.class;

        // 创建 Car 对象
        Constructor<?> constructor = clazz.getConstructor(String.class, int.class);
        Object car = constructor.newInstance("Toyota", 2020);

        // 访问和修改字段
        Field modelField = clazz.getDeclaredField("model");
        Field yearField = clazz.getDeclaredField("year");
       
        // 设置字段为可访问(如果字段是私有的)
        modelField.setAccessible(true);
        yearField.setAccessible(true);
       
        // 打印原始字段值
        System.out.println("Original Model: " + modelField.get(car));
        System.out.println("Original Year: " + yearField.get(car));
       
        // 修改字段值
        modelField.set(car, "Honda");
        yearField.set(car, 2024);
       
        // 打印修改后的字段值
        System.out.println("Updated Model: " + modelField.get(car));
        System.out.println("Updated Year: " + yearField.get(car));
       
        // 调用方法
        Method startMethod = clazz.getMethod("start");
        startMethod.invoke(car);
    }
}

class Car {
    private String model;
    private int year;

    public Car(String model, int year) {
        this.model = model;
        this.year = year;
    }

    public void start() {
        System.out.println("The " + model + " car of year " + year + " is starting.");
    }
}




















































版权声明


相关文章:

  • java教程类型转换2025-10-28 20:58:02
  • java 168教程2025-10-28 20:58:02
  • 网页java设计教程2025-10-28 20:58:02
  • java抽象编程教程2025-10-28 20:58:02
  • java rsa教程2025-10-28 20:58:02
  • java最强兄弟教程2025-10-28 20:58:02
  • java运行教程详细2025-10-28 20:58:02
  • java乘号分割教程2025-10-28 20:58:02
  • 阿里达摩院JAVA教程2025-10-28 20:58:02
  • java转php教程2025-10-28 20:58:02