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
广告