首頁 > Java > java教程 > 主體

Java的反射機制是什麼及怎麼獲取

王林
發布: 2023-05-10 19:07:04
轉載
1671 人瀏覽過

Java反射機制

Java 反射機制是在運行狀態中,對於任意一個類,都能夠獲得這個類別的所有屬性和方法,對於任意一個物件都能夠呼叫它的任意一個屬性和方法。這種在運行時動態的獲取資訊以及動態呼叫物件的方法的功能稱為 Java 的反射機制。

Class 類別與 java.lang.reflect 類別庫一起對反射的概念進行了支持,該類別庫包含了 Field,Method,Constructor 類別 (每個類別都實作了 Member 介面)。這些類型的物件時由 JVM 在運行時建立的,用以表示未知類別裡對應的成員。這樣你就可以使用 Constructor 建立新的對象,用 get() 和 set() 方法讀取和修改與 Field 物件關聯的字段,用invoke() 方法呼叫與 Method 物件關聯的方法。

另外,還可以呼叫 getFields() getMethods() 和getConstructors() 等很便利的方法,以傳回表示字段,方法,以及建構器的物件的數組。這樣匿名物件的資訊
就能在執行時被完全確定下來,而在編譯時不需要知道任何事情。

package com.microSpringboot.ReadingList.reflect;

import java.lang.reflect.Constructor;

public class ReflectTest {

    public static void main(String[] args) throws Exception {
        Class clazz = null;
        clazz = Class.forName("com.microSpringboot.ReadingList.reflect.Fruit");
        Constructor<Fruit> constructor1 = clazz.getConstructor();
        Constructor<Fruit> constructor2 = clazz.getConstructor(String.class);
        Fruit fruit1 = constructor1.newInstance();
        Fruit fruit2 = constructor2.newInstance("Apple");
    }
}


class Fruit {

    public Fruit() {
        System.out.println("无参构造器 Run...........");
    }

    public Fruit(String type) {
        System.out.println("有参构造器 Run..........." + type);
    }
}
登入後複製
运行结果: 无参构造器 Run……….. 有参构造器 Run………..Apple
登入後複製

Java取得反射的三種方法

1.透過new物件實作反射機制

2.透過路徑實作反射機制

3.透過類別名稱實作反射機制

package com.microSpringboot.ReadingList.reflect;

public class Student {
    private int id;
    private String name;
    protected boolean sex;
    public float score;

}
登入後複製
package com.microSpringboot.ReadingList.reflect;

public class Get {

    //获取反射机制三种方式
    public static void main(String[] args) throws ClassNotFoundException {
        //方式一(通过建立对象)
        Student student = new Student();
        Class stuClass1 = student.getClass();
        System.out.println(stuClass1.getName());
        //方式二(所在通过路径-相对路径)
        Class stuClass2 = Class.forName("com.microSpringboot.ReadingList.reflect.Student");
        System.out.println(stuClass2.getName());
        //方式三(通过类名)
        Class stuClass3 = Student.class;
        System.out.println(stuClass3.getName());
    }
}
登入後複製

以上是Java的反射機制是什麼及怎麼獲取的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!