Java遍历对象属性

java.util.Calendar clndr = java.util.Calendar.getInstance();
Class cls = clndr.getClass();

System.out.println(cls.getName());
java.lang.reflect.Field[] flds = cls.getFields();

if ( flds != null )
{
    for ( int i = 0; i < flds.length; i++ )
    {
        System.out.println(flds[i].getName() + " - " + flds[i].get(clndr));
    }
}

以上以Calendar为例遍历对象的所有属性(field);

如果要得到private属性:public Field[] getDeclaredFields();


### Java遍历对象字段名称与对应值 为了在 Java遍历对象的字段名称与其对应的值,可以利用反射机制。下面展示了一种常见的方式来完成这一操作。 #### 使用 `getDeclaredFields` 方法获取私有和公共字段 ```java import java.lang.reflect.Field; public class ReflectDemo { public static void printAttributes(Object obj) throws IllegalAccessException { Class<?> clazz = obj.getClass(); Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); // 设置可访问私有字段 Object value = field.get(obj); System.out.println("Field name: " + field.getName()); System.out.println("Field type: " + field.getType()); System.out.println("Value: " + value); } } public static void main(String[] args) throws IllegalAccessException { User user = new User("John", 30, "john@example.com"); printAttributes(user); } } class User { private String name; private int age; private String email; public User(String name, int age, String email) { this.name = name; this.age = age; this.email = email; } } ``` 这段代码定义了一个名为 `ReflectDemo` 的类,其中包含了静态方法 `printAttributes` 来打印传入对象的所有字段名及其值[^1]。此方法接收任意类型的对象作为参数,并通过调用 `getClass()` 获取该对象所属的类实例。接着,使用 `getDeclaredFields()` 获得所有声明过的字段(无论是否为私有),并通过设置 `setAccessible(true)` 让程序能够读取到私有的字段值[^2]。 对于每一个字段,先将其设为可访问状态以便于后续的操作;之后再分别取出字段的名字、类型以及实际存储的内容并输出至控制台。最后,在 `main` 函数里创建了一个具体的 `User` 对象用于测试上述功能[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值