揭秘Java反射:如何輕鬆獲取類的屬性及父類屬性

木头左發表於2024-05-22

哈嘍,大家好,我是木頭左!

相信很多小夥伴在學習Java的過程中,都曾經遇到過需要動態地獲取類的屬性和方法的場景。而Java反射正是解決這個問題的利器。那麼,如何使用Java反射來獲取類的屬性及父類的屬性呢?

一、Java反射簡介

要了解一下Java反射是什麼。簡單來說,Java反射就是執行時能夠獲取類的資訊,並且可以操作類或物件的一種機制。透過Java反射,可以在執行時獲取類的構造方法、成員變數、成員方法等資訊,甚至可以建立物件、呼叫方法等。

二、Java反射獲取類的屬性

接下來,重點講解一下如何使用Java反射獲取類的屬性。需要獲取到類的Class物件,然後透過這個Class物件就可以獲取到類的所有屬性了。這裡以一個示例來說明:
假設有一個Person類,如下所示:

public class Person {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

可以使用以下程式碼來獲取Person類的屬性:

import java.lang.reflect.Field;

public class Main {
    public static void main(String[] args) throws IllegalAccessException {
        Person person = new Person("張三", 25);
        Class<?> clazz = person.getClass(); // 獲取Person類的Class物件
        Field[] fields = clazz.getDeclaredFields(); // 獲取Person類的所有屬性(包括父類的屬性)
        for (Field field : fields) {
            System.out.println("屬性名:" + field.getName());
            System.out.println("屬性型別:" + field.getType());
        }
    }
}

執行上述程式碼,可以得到如下輸出:

屬性名:name
屬性型別:class java.lang.String
屬性名:age
屬性型別:int

可以看到,成功地獲取到了Person類的屬性以及父類的屬性。

我是木頭左,感謝各位童鞋的點贊、收藏,我們下期更精彩!

相關文章