在Java类中,我们可以使用反射中的getDeclaredFields()或者getFields()方法来获取属性和值。
- getFields():获取某个类的所有的public字段,其中是包括父类的public字段的。
- getDeclaredFields():获取某个类的自身的所有字段,不包括父类的字段。
比如测试类:
public class Test {
    public int id;
    public String name;
}
获取类的属性和值
public class Application {
    public static void main(String[] args) throws Exception {
        Test test = new Test();
        test.id = 1;
        test.name = "guoke";
        // 遍历输出属性
        Field[] fields =  test.getClass().getDeclaredFields();
        for( int i = 0; i < fields.length; i++){
            Field f = fields[i];
            System.out.println("属性名:"+f.getName()+",属性值:"+f.get(test));
        }
    }
}
设置类的属性值,比如做一个类成员属性深拷贝
public class Test {
    public int id;
    public String name;
    
    public void copy(Test obj){
        try {
            Field[] fields =  obj.getClass().getDeclaredFields();
            for( int i = 0; i < fields.length; i++){
                Field f = fields[i];
                f.set(this, f.get(obj));
            }
        } catch (Exception e) {
            Log.error(e);
        }
    }
}
测试:
public class Application {
    public static void main(String[] args) throws Exception {
        Test test = new Test();
        test.id = 1;
        test.name = "guoke";
        Test test1 = new Test();
        test1.copy(test);
    }
}
 
             
           
                         
             
            
评论区