在java運行的應用中,類和接口代表着Class的實例。枚舉是類的一種,註解是接口的一種,數組是屬於類。
Class的構造函數
//只允許JVM創建Class對象
private Class() {}
Class的部分函數通過全類名,獲取ClassClass<?> 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源碼。