Class類源碼淺析


在java運行的應用中,類和接口代表着Class的實例。枚舉是類的一種,註解是接口的一種,數組是屬於類。

Class的構造函數

//只允許JVM創建Class對象
private Class() {}
Class的部分函數通過全類名,獲取Class
Class<?> forName(String className)
通過Class對象獲取類的實例
T newInstance()
獲取類的名稱,name將被緩存減少VM的調用次數
private transient String name;
 public String getName() {
        String name = this.name;
        if (name == null)
            this.name = name = getName0();
        return name;
    }
獲取加載該類的類加載器
ClassLoader getClassLoader()
獲取公有的構造函數
public Constructor<?>[] getConstructors() throws SecurityException {
		//判斷是否有公有構造函數
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
        return copyConstructors(privateGetDeclaredConstructors(true));
    }
獲取所有公有字段
public Field[] getFields() throws SecuityException {
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
        return copyFields(privateGetPublicFields(null));
    }
獲取所有公有的方法
public Method[] getMethods() throws SecurityException {
        checkMemberAccess(Member.PUBLIC, ClassLoader.getCallerClassLoader());
        return copyMethods(privateGetPublicMethods());
    }

獲取私有構造方法、屬性以及方法,加Declared,例如getDeclaredFields。
更多的內容可以看Class源碼。
發佈了298 篇原創文章 · 獲贊 9 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章