Java反射——java.lang.Class 類簡介

Java的基本思想之一是萬事萬物即對象,類也是一種對象。可是類是什麼對象呢?Java中的類是java.lang.Class的實例化對象,這被成爲類類型。java

//java.lang.Class類中的的主要方法以下數組

 

 

下面是Java1.8 API中java.lang.Class類中的方法:函數

 

va.lang中Class Class <T>
java.lang.Object繼承的java.lang.Class<T>
類型參數:
  T - 由此Class對象建模的類的類型。 例如,String.class的類型是Class <String>。 若是正在建模的類未知,請使用Class <?>。編碼

全部已實現的接口:
  Serializable,AnnotatedElement,GenericDeclaration,Type對象

類定義
  public final class Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement繼承

類Class的實例表示正在運行的Java應用程序中的類和接口。 枚舉是一種類,註釋是一種接口。 每一個數組也屬於一個類,它反映爲一個Class對象,由具備相同元素類型和維數的全部數組共享。 原始Java類型(boolean,byte,char,short,int,long,float和double)以及關鍵字void也表示爲Class對象。接口

類沒有公共構造函數。 相反,類對象由Java虛擬機在加載類時自動構造,並經過調用類加載器中的defineClass方法。資源

如下示例使用Class對象來打印對象的類名:
  void printClassName(Object obj) {
    System.out.println("The class of " + obj +
    " is " + obj.getClass().getName());
  }字符串

也能夠使用類文字獲取命名類型(或void)的Class對象。 請參閱Java™語言規範的第15.8.2節。 例如:
  System.out.println("The name of class Foo is: "+Foo.class.getName());get


方法摘要:
修飾符和類型 方法和描述
<U> Class<? extends U> asSubclass(Class<U> clazz)
  轉換此Class對象以表示由指定的類對象表示的類的子類。

T cast(Object obj)
  將對象強制轉換爲此Class對象所表示的類或接口。

boolean desiredAssertionStatus()
  若是要在調用此方法時初始化,則返回將分配給此類的斷言狀態。

static Class<?> forName(String className)
  返回與具備給定字符串名稱的類或接口關聯的Class對象。

static Class <?> forName(String name,boolean initialize,ClassLoader loader)
  使用給定的類加載器返回與具備給定字符串名稱的類或接口關聯的Class對象。

AnnotatedType[] getAnnotatedInterfaces()
  返回AnnotatedType對象的數組,這些對象表示使用類型來指定此Class對象所表示的實體的超接口。

AnnotatedType getAnnotatedSuperclass()
  返回AnnotatedType對象,該對象表示使用類型來指定此Class對象所表示的實體的超類。

<A extends Annotation> A getAnnotation(Class<A> annotationClass)
  若是存在這樣的註釋,則返回指定類型的此元素的註釋,不然返回null。

Annotation[] getAnnotations()
  返回此元素上存在的註釋。

<A extends Annotation> A[] getAnnotationsByType(Class<A> annotationClass)
  返回與此元素關聯的註釋。

String getCanonicalName()
  返回Java語言規範定義的基礎類的規範名稱。

Class<?>[] getClasses()
  返回一個數組,其中包含Class對象,這些對象表示做爲此Class對象所表示的類的成員的全部公共類和接口。

ClassLoader getClassLoader()
  返回類的類加載器。

Class<?> getComponentType()
  返回表示數組的組件類型的Class。

Constructor<T> getConstructor(Class<?>... parameterTypes)
  返回一個Constructor對象,該對象反映此Class對象所表示的類的指定公共構造函數。

Constructor<?>[] getConstructors()
  返回一個包含Constructor對象的數組,這些對象反映此Class對象所表示的類的全部公共構造函數。

<A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
  若是直接存在這樣的註釋,則返回指定類型的此元素的註釋,不然返回null。

Annotation[] getDeclaredAnnotations()
  返回直接出如今此元素上的註釋。

<A extends Annotation> A[] getDeclaredAnnotationsByType(Class<A> annotationClass)
  若是此類註釋直接存在或間接存在,則返回指定類型的此元素的註釋。

Class<?>[] getDeclaredClasses()
  返回Class對象的數組,這些對象反映聲明爲此Class對象所表示的類的成員的全部類和接口。

Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
  返回一個Constructor對象,該對象反映此Class對象所表示的類或接口的指定構造函數。

Constructor<?>[] getDeclaredConstructors()
  返回Constructor對象的數組,這些對象反映由此Class對象表示的類聲明的全部構造函數。

Field getDeclaredField(String name)
  返回一個Field對象,該對象反映此Class對象所表示的類或接口的指定聲明字段。

Field[] getDeclaredFields()
  返回Field對象的數組,這些對象反映由此Class對象表示的類或接口聲明的全部字段。

Method getDeclaredMethod(String name, Class<?>... parameterTypes)
  返回一個Method對象,該對象反映此Class對象所表示的類或接口的指定聲明方法。

Method[] getDeclaredMethods()
  返回一個數組,其中包含反映此Class對象所表示的類或接口的全部聲明方法的Method對象,包括public,protected,default(包)訪問和私有方法,但不包括繼承的方法。

Class<?> getDeclaringClass()
  若是此Class對象表示的類或接口是另外一個類的成員,則返回表示聲明它的類的Class對象。

Class<?> getEnclosingClass()
  返回基礎類的直接封閉類。

Constructor<?> getEnclosingConstructor()
  若是此Class對象表示構造函數中的本地或匿名類,則返回一個Constructor對象,該對象表示基礎類的直接封閉構造函數。

Method getEnclosingMethod()
  若是此Class對象表示方法中的本地或匿名類,則返回表示基礎類的直接封閉方法的Method對象。

T[] getEnumConstants()
  返回此枚舉類的元素,若是此Class對象不表示枚舉類型,則返回null。

Field getField(String name)
  返回一個Field對象,該對象反映此Class對象所表示的類或接口的指定公共成員字段。

Field[] getFields()
  返回一個包含Field對象的數組,這些對象反映此Class對象所表示的類或接口的全部可訪問公共字段。

Type[] getGenericInterfaces()
  返回表示由此對象表示的類或接口直接實現的接口的Types。

Type getGenericSuperclass()
  返回表示此Class表示的實體(類,接口,基本類型或void)的直接超類的Type。

Class<?>[] getInterfaces()
  肯定由此對象表示的類或接口實現的接口。

Method getMethod(String name, Class<?>... parameterTypes)
  返回一個Method對象,該對象反映此Class對象所表示的類或接口的指定公共成員方法。

Method[] getMethods()
  返回一個包含Method對象的數組,這些對象反映此Class對象所表示的類或接口的全部公共方法,包括由類或接口聲明的那些以及從超類和超接口繼承的那些。

int getModifiers()
  返回此類或接口的Java語言修飾符,以整數編碼。

String getName()
  以String形式返回此Class對象表示的實體名稱(類,接口,數組類,基本類型或void)。

Package getPackage()
  獲取此類的包。

ProtectionDomain getProtectionDomain()
  返回此類的ProtectionDomain。

URL getResource(String name)
  查找具備給定名稱的資源。

InputStream getResourceAsStream(String name)
  查找具備給定名稱的資源。

Object[] getSigners()
  獲取此類的簽名者。

String getSimpleName()
  返回源代碼中給出的基礎類的簡單名稱。

Class<? super T> getSuperclass()
  返回表示此Class表示的實體(類,接口,基本類型或void)的超類的Class。

String getTypeName()
  返回此類型名稱的信息字符串。

TypeVariable<Class<T>>[] getTypeParameters()
  返回TypeVariable對象的數組,這些對象表示由此GenericDeclaration對象以聲明順序表示的泛型聲明聲明的類型變量。

boolean isAnnotation()
  若是此Class對象表示註釋類型,則返回true。boolean isAnnotationPresent(Class <?extends Annotation> annotationClass)若是此元素上存在指定類型的註釋,則返回true,不然返回false。

boolean isAnonymousClass()
  當且僅當基礎類是匿名類時返回true。

boolean isArray()
  肯定此Class對象是否表示數組類。

boolean isAssignableFrom(Class<?> cls)
  肯定此Class對象表示的類或接口是否與指定的Class參數表示的類或接口相同,或者是它們的超類或超接口。

boolean isEnum()
  當且僅當此類在源代碼中聲明爲枚舉時返回true。

boolean isInstance(Object obj)
  肯定指定的Object是否與此Class表示的對象分配兼容。

boolean isInterface()
  肯定指定的Class對象是否表示接口類型。

boolean isLocalClass()
  當且僅當基礎類是本地類時返回true。

boolean isMemberClass()
  當且僅當底層類是成員類時返回true。

boolean isPrimitive()
  肯定指定的Class對象是否表示基本類型。

boolean isSynthetic()
  若是此類是合成類,則返回true; 不然返回false。

T newInstance()
  建立此Class對象表示的類的新實例。

String toGenericString()
  返回描述此Class的字符串,包括有關修飾符和類型參數的信息。

String toString()   將對象轉換爲字符串。

相關文章
相關標籤/搜索