獲取class對象

獲取Class對象

  • 使用Class類的forName(String clazzName)靜態方法。例如,Person.class將會返回Person類對應的Class對象。
  • 調用某個類的class屬性來獲取該類對應的Class對象。例如,Person.class將會返回Person類對應的Class對象。
  • 調用某個能夠的getClass()方法。該方法是java.lang.Object類中的一個方法,所以所有的JAVA對象都可以調用該方法,該方法將會返回該對象所屬類對應的Class對象。

對於第一種方式和第二種方式都是直接根據類來取得該類的Class對象,相比之下,第二種方式有如下兩種優勢。

  • 代碼更安全。程序在編譯階段就可以檢查需要訪問的Class對象是否存在。
  • 程序性能更好。因爲這種方式無須調用方法,所以性能更好。
    也就是說,能使用第二種方式,就不使用第一種方法。
    四、從Class中獲取信息
    獲取Classc對應類所包含的構造器
序號 方法 說明
1 Constructor<T> getConstructor(Class<?>… parameterTypes) 獲取指定public的構造器
2 Constructor[]<T> getConstructors() 獲取全部public的構造器
3 Constructor<T> getDeclaredConstructor(Class<?>… parameterTypes) 獲取指定的構造器
4 Constructor[]<T> getDeclaredConstructors() 獲取全部的構造器

獲取Classc對應類所包含的方法

序號 方法 說明
1 Method<T> getMethod(String name,Class<?>… parameterTypes) 根據可變參數獲取方法名爲name獲取public的方法
2 Method[]<T> getMethods() 獲取所有public的方法
3 Method<T> getDeclaredMethod(String name,Class<?>… parameterTypes) 根據可變參數獲取方法名爲name獲取的方法
4 Method[]<T> getDeclaredMethods() 獲取所有的方法

獲取Classc對應類所包含的屬性(成員變量)

序號 方法 說明
1 Field<T> getField(String name) 根據name獲取public的成員變量
2 Field[]<T> getFields() 獲取所有public的成員變量
3 Field<T> getDeclaredField(String name) 根據name獲取的成員變量
4 Field[]<T> getDeclaredFields() 獲取所有的成員變量

獲取Classc對應類所包含的註解

序號 方法 說明
1 Annotation<T> getAnnotation(Class annotationClass) 根據annotationClass獲取public的註解
2 Annotation[]<T> getAnnotations() 獲取所有public的註解
3 Annotation<T> getDeclaredAnnotation(Class annotationClass) 根據annotationClass獲取的註解
4 Annotation[]<T> getDeclaredAnnotations() 獲取所有的註解
5 <A extends Annotation> A[]<T> getAnnotationsByType(Class annotationClass) 與getAnnotation相似,用於重複註解
6 <A extends Annotation> A[]<T> getDeclaredAnnotationsByType(Class annotationClass) 與getAnnotation相似,用於重複註解

獲取Classc對應類所包含的類

序號 方法 說明
1 Class<?>[] getDeclaredClasses() 獲取該Class對象包含的全部內部類
2 Class<?> getDeclaringClass() 獲取外部類,也就是自身
3 Class<? super T> getSuperclass() 獲取超類(父類)
4 Class<?>[] getInterfaces() 獲取該類實現的全部接口

獲取Classc對應類的基礎信息

序號 方法 說明
1 int getModifiers() 獲取所有修飾符,需要用Modifier工具類進行解析
1 Package getPackage() 獲取包名
1 int getSimpleName() 獲取對象名稱(String)
1 boolean isAnnotation() 判斷是否註解類型
1 boolean isAnnotationPresent(Class<? extends Annotation> annotationsClass) 判斷是否使用了註解進行修飾
1 boolean isAnonymousClass() 判斷是否是匿名類
1 boolean isArray() 判斷是否是數組類
1 boolean isEnum() 判斷是否是枚舉類
1 boolean isInterface() 判斷是否是接口
1 boolean isInstance(Object o) 判斷是否是指定類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章