循环获取Java中泛型T的属性以及属性值

4 篇文章 0 订阅

利用 Java 的反射机制来获取泛型类中的属性及其对应的值。具体实现方式如下:

import java.lang.reflect.Field;

public class GenericClassUtil<T> {
    // 泛型对象
    private T obj;

    public GenericClassUtil(T obj) {
        this.obj = obj;
    }

    // 循环出泛型对象的属性和属性值
    public void printObjectFields() throws IllegalAccessException {
        // 获取当前类的 Class 对象
        Class clazz = obj.getClass();

        // 获取当前对象所有的属性,包括父类中的属性
        Field[] fields = clazz.getDeclaredFields();
        for (Field f : fields) {
            // 设置可访问私有属性,默认是不可访问的
            f.setAccessible(true);
            // 获取属性名
            String fieldName = f.getName();
            // 获取属性值
            Object fieldValue = f.get(obj);
            System.out.println(fieldName + ":" + fieldValue);
        }
    }
}

这里我们创建了一个 GenericClassUtil 类,并将泛型对象传入构造函数。在 printObjectFields 方法中,我们首先获取对象的 Class 对象,然后通过调用 getDeclaredFields() 方法获取对象所有的属性,并使用增强 for 循环方式遍历属性数组。在循环过程中,我们首先设置对象属性为可访问(即使是私有属性也可以被访问),然后分别获取属性名和属性值,并输出到控制台。

以下是一个示例代码来调用 GenericClassUtil 类的方法:

public static void main(String[] args) throws IllegalAccessException {
    // 创建一个 User 对象
    User user = new User();
    user.setId(1L);
    user.setName("张三");
    user.setAge(20);
    
    // 创建 GenericClassUtil 类,传入 User 类型的对象
    GenericClassUtil<User> genericClassUtil = new GenericClassUtil<>(user);

    // 调用 printObjectFields 方法输出所有属性和属性值
    genericClassUtil.printObjectFields();
}

在这个示例代码中,我们创建了一个 User 对象,并设置了其属性值。接着,我们创建了一个 GenericClassUtil 类对象,将 User 类型的泛型对象传入构造函数,最后调用 printObjectFields 方法即可循环出对象的所有属性及其对应的值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人生重启

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值