Java 類



簡介

Java Class 類例項代表執行中的 Java 應用程式中的類和介面。它沒有公共建構函式。

類宣告

以下是java.lang.Class類的宣告:

public final class Class<T>
   extends Object
      implements Serializable, GenericDeclaration, Type, AnnotatedElement

類方法

序號 方法及描述
1 <U> Class<? extends U> asSubclass(Class<U> clazz)

此方法將此 Class 物件強制轉換為代表由指定類物件表示的類的子類。

2 T cast(Object obj)

此方法將物件強制轉換為由此 Class 物件表示的類或介面。

3 boolean desiredAssertionStatus()

此方法返回在呼叫此方法時初始化此類時將分配給此類的斷言狀態。

4 static Class<?> forName(String className)

此方法返回與具有給定字串名稱的類或介面關聯的 Class 物件。

5 static Class<?> forName(String name, boolean initialize, ClassLoader loader)

此方法使用給定的類載入器返回與具有給定字串名稱的類或介面關聯的 Class 物件。

6

<A extends Annotation> A getAnnotation(Class<A> annotationClass)

如果存在此類註釋,此方法將返回此元素針對指定型別的註釋;否則返回 null。

7 Annotation[] getAnnotations()

此方法返回此元素上存在的所有註釋。

8 String getCanonicalName()

此方法返回根據 Java 語言規範定義的底層類的規範名稱。

9 Class<?>[] getClasses()

此方法返回一個包含 Class 物件的陣列,這些物件代表作為由此 Class 物件表示的類的成員的所有公共類和介面。

10 ClassLoader getClassLoader()

此方法返回類的類載入器。

11 Class<?> getComponentType()

此方法返回表示陣列的元件型別的 Class。

12 Constructor<T> getConstructor(Class<?>... parameterTypes)

此方法返回一個 Constructor 物件,該物件反映由此 Class 物件表示的類的指定公共建構函式。

13 Constructor<?>[] getConstructors()

此方法返回一個包含 Constructor 物件的陣列,這些物件反映由此 Class 物件表示的類的所有公共建構函式。

14

Annotation[] getDeclaredAnnotations()

此方法返回直接在此元素上存在的所有註釋。

15 Class<?>[] getDeclaredClasses()

此方法返回一個 Class 物件陣列,這些物件反映作為由此 Class 物件表示的類的成員宣告的所有類和介面。

16 Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)

此方法返回一個 Constructor 物件,該物件反映由此 Class 物件表示的類或介面的指定建構函式。

17 Constructor<?>[] getDeclaredConstructors()

此方法返回一個 Constructor 物件陣列,這些物件反映由此 Class 物件表示的類宣告的所有建構函式。

18 Field getDeclaredField(String name)

此方法返回一個 Field 物件,該物件反映由此 Class 物件表示的類或介面的指定宣告欄位。

19 Field[] getDeclaredFields()

此方法返回一個 Field 物件陣列,這些物件反映由此 Class 物件表示的類或介面宣告的所有欄位。

20 Method getDeclaredMethod(String name, Class<?>... parameterTypes)

此方法返回一個 Method 物件,該物件反映由此 Class 物件表示的類或介面的指定宣告方法。

21 Method[] getDeclaredMethods()

此方法返回一個 Method 物件陣列,這些物件反映由此 Class 物件表示的類或介面宣告的所有方法。

22 Class<?> getDeclaringClass()

如果由此 Class 物件表示的類或介面是另一個類的成員,則返回表示其宣告所在類的 Class 物件。

23 Class<?> getEnclosingClass()

此方法返回底層類的直接封閉類。

24 Constructor<?> getEnclosingConstructor()

如果此 Class 物件表示建構函式內的區域性類或匿名類,則返回一個 Constructor 物件,該物件表示底層類的直接封閉建構函式。

25 Method getEnclosingMethod()

如果此 Class 物件表示方法內的區域性類或匿名類,則返回一個 Method 物件,該物件表示底層類的直接封閉方法。

26 T[] getEnumConstants()

此方法返回此列舉類的元素;如果此 Class 物件不代表列舉型別,則返回 null。

27 Field getField(String name)

此方法返回一個 Field 物件,該物件反映由此 Class 物件表示的類或介面的指定公共成員欄位。

28 Field[] getFields()

此方法返回一個包含 Field 物件的陣列,這些物件反映由此 Class 物件表示的類或介面的所有可訪問公共欄位。

29 Type[] getGenericInterfaces()

此方法返回表示由此物件表示的類或介面直接實現的介面的 Type。

30 Type getGenericSuperclass()

此方法返回表示由此 Class 表示的實體(類、介面、基本型別或 void)的直接超類的 Type。

31 Class<?>[] getInterfaces()

此方法確定由此物件表示的類或介面實現的介面。

32 Method getMethod(String name, Class<?>... parameterTypes)

此方法返回一個 Method 物件,該物件反映由此 Class 物件表示的類或介面的指定公共成員方法。

33 Method[] getMethods()

此方法返回一個包含 Method 物件的陣列,這些物件反映由此 Class 物件表示的類或介面的所有公共成員方法,包括由類或介面宣告的方法以及從超類和超介面繼承的方法。

34 int getModifiers()

此方法返回此類或介面的 Java 語言修飾符,編碼為整數。

35 String getName()

此方法將由此 Class 物件表示的實體(類、介面、陣列類、基本型別或 void)的名稱作為字串返回。

36 Package getPackage()

此方法獲取此類的包。

37 ProtectionDomain getProtectionDomain()

此方法返回此類的 ProtectionDomain。

38 URL getResource(String name)

此方法查詢具有給定名稱的資源。

39 InputStream getResourceAsStream(String name)

此方法查詢具有給定名稱的資源。

40 Object[] getSigners()

此方法獲取此類的簽名者。

41 String getSimpleName()

此方法返回原始碼中給出的底層類的簡單名稱。

42 Class<? super T> getSuperclass()

此方法返回表示由此 Class 表示的實體(類、介面、基本型別或 void)的超類的 Class。

43 TypeVariable<Class<T>>[] getTypeParameters()

此方法返回一個 TypeVariable 物件陣列,這些物件按宣告順序表示由此 GenericDeclaration 物件表示的泛型宣告宣告的型別變數。

44

boolean isAnnotation()

如果此 Class 物件表示註釋型別,則此方法返回 true。

45

boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)

如果此元素上存在針對指定型別的註釋,則此方法返回 true;否則返回 false。

46 boolean isAnonymousClass()

當且僅當底層類是匿名類時,此方法返回 true。

47 boolean isArray()

此方法確定此 Class 物件是否表示陣列類。

48 boolean isAssignableFrom(Class<?> cls)

此方法確定由此 Class 物件表示的類或介面是否與由指定的 Class 引數表示的類或介面相同,或者是否是其超類或超介面。

49 boolean isEnum()

當且僅當此類在原始碼中宣告為列舉時,此方法返回 true。

50 boolean isInstance(Object obj)

此方法確定指定的 Object 是否與由此 Class 表示的物件賦值相容。

51 boolean isInterface()

此方法確定指定的 Class 物件是否表示介面型別。

52 boolean isLocalClass()

當且僅當底層類是區域性類時,此方法返回 true。

53 boolean isMemberClass()

當且僅當底層類是成員類時,此方法返回 true。

54 boolean isPrimitive()

此方法確定指定的 Class 物件是否表示基本型別。

55 boolean isSynthetic()

如果此類是合成類,則此方法返回 true;否則返回 false。

56 T newInstance()

此方法建立由此 Class 物件表示的新類例項。

57 String toString()

此方法將物件轉換為字串。

繼承的方法

此類繼承自以下類的方法:

  • java.lang.Object

獲取類名和將父類強制轉換為子類示例

以下示例顯示了 Class asSubclass() 方法的用法。我們建立了兩個類,ClassDemo 及其子類 SubClass1。使用 getClass() 方法,我們列印了類名,然後使用 asSubClass 將父類強制轉換為子類並獲取其例項。

package com.tutorialspoint;

public class ClassDemo {

   public static void main(String[] args) {

     try {
         ClassDemo cls = new ClassDemo();
         ClassDemo subcls = new SubClass1(); 

         // class ClassDemo
         Class c = cls.getClass(); 
         System.out.println(c);

         // sub class SubClass1
         Class c1 = subcls.getClass();
         System.out.println(c1);

         // represent a subclass of the specified class object
         Class retval = c1.asSubclass(c);

         System.out.println(retval);
      } catch(ClassCastException e) {
         System.out.println(e.toString());
      }
   }
}

class SubClass1 extends ClassDemo {
   // sub class
} 

讓我們編譯並執行上述程式,這將產生以下結果:

class com.tutorialspoint.ClassDemo
class com.tutorialspoint.SubClass1
class com.tutorialspoint.SubClass1
廣告