Java Class getGenericSuperClass() 方法



描述

Java Class getGenericSuperClass() 方法返回表示此 Class 表示的實體(類、介面、原始型別或 void)的直接超類的 Type。

宣告

以下是 java.lang.Class.getGenericSuperclass() 方法的宣告

public Type getGenericSuperclass()

引數

返回值

此方法返回此物件所表示的類的超類。

異常

  • GenericSignatureFormatError − 如果泛型類簽名不符合 Java 虛擬機器規範第 3 版中指定的格式。

  • TypeNotPresentException − 如果泛型超類引用不存在的型別宣告。

  • MalformedParameterizedTypeException − 如果泛型超類引用任何原因都無法例項化的引數化型別。

獲取類的泛型超類示例

以下示例演示了 java.lang.Class.getGenericSuperclass() 方法的用法。在此程式中,我們建立了一個擴充套件 ArrayList 的 IntegerClass 類。現在使用 getGenericSuperClass() 方法,檢索並列印 IntegerClass 的泛型超類。

package com.tutorialspoint;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;

public class ClassDemo {

   public static void main(String args[]) {

      // returns the superclass
      Type t = IntegerClass.class.getGenericSuperclass();
      System.out.println(t); 
    
      ParameterizedType p = (ParameterizedType)t;
      System.out.println(p.getActualTypeArguments()[0]);
   }
}

class IntegerClass extends ArrayList<Integer> {
   public IntegerClass() {
      // no argument constructor
   }
}

輸出

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

java.util.ArrayList<java.lang.Integer>
class java.lang.Integer

獲取 ArrayList 的泛型超類示例

以下示例演示了 java.lang.Class.getGenericSuperclass() 方法的用法。在此程式中,我們使用了 ArrayList 的類。現在使用 getGenericSuperClass() 方法,檢索並列印 ArrayList 的泛型超類。

package com.tutorialspoint;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;

public class ClassDemo {

   public static void main(String args[]) {

      // returns the superclass
      Type t = ArrayList.class.getGenericSuperclass();
      System.out.println(t); 
    
      ParameterizedType p = (ParameterizedType)t;
      System.out.println(p.getActualTypeArguments()[0]);
   }
}

輸出

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

java.util.AbstractList<E>
E

獲取 Thread 的泛型超類示例

以下示例演示了 java.lang.Class.getGenericSuperclass() 方法的用法。在此程式中,我們使用了 Thread 的類。現在使用 getGenericSuperClass() 方法,檢索並列印 Thread 的泛型超類。

package com.tutorialspoint;

import java.lang.reflect.Type;

public class ClassDemo {

   public static void main(String args[]) {

      // returns the superclass
      Type t = Thread.class.getGenericSuperclass();
      System.out.println(t); 
   }
}

輸出

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

class java.lang.Object
java_lang_class.htm
廣告