Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java反射原理

作者:冰残°零度伤   发布日期:2025-10-14   浏览:57

// Java反射原理示例代码

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

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void sayHello() {
        System.out.println("Hello, my name is " + name);
    }

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
}

public class ReflectionExample {
    public static void main(String[] args) {
        try {
            // 获取类的Class对象
            Class<?> personClass = Class.forName("Person");

            // 创建实例
            Constructor<?> constructor = personClass.getConstructor(String.class, int.class);
            Object personInstance = constructor.newInstance("Alice", 30);

            // 调用方法
            Method sayHelloMethod = personClass.getMethod("sayHello");
            sayHelloMethod.invoke(personInstance);

            // 访问私有字段
            Field nameField = personClass.getDeclaredField("name");
            nameField.setAccessible(true); // 允许访问私有字段
            String nameValue = (String) nameField.get(personInstance);
            System.out.println("Name: " + nameValue);

            // 修改私有字段
            nameField.set(personInstance, "Bob");
            System.out.println("After changing name: " + personInstance.toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

解释说明:

  1. 获取类的Class对象:通过Class.forName("Person")获取Person类的Class对象。
  2. 创建实例:使用getConstructornewInstance方法创建Person类的实例。
  3. 调用方法:通过getMethod获取sayHello方法,并使用invoke调用该方法。
  4. 访问私有字段:使用getDeclaredField获取私有字段name,并通过setAccessible(true)允许访问私有字段。然后使用get方法读取字段值。
  5. 修改私有字段:使用set方法修改私有字段的值。

这段代码展示了如何使用Java反射机制来动态地创建对象、调用方法以及访问和修改私有字段。

上一篇:java 当前时间戳

下一篇:java system.getenv

大家都在看

java连接数据库的代码

java djl

ubuntu 卸载java

java读取excel中的图片

java新建

java sort用法

java collections.sort

java file类的方法

java发送qq邮件

java 判断

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站