getGenericSuperclass与getSuperclass解说

canca canca
2010-02-22 01:40
1
0

一.说明

1.Class<? super T> getSuperclass():返回本类的父类

2.Type getGenericSuperclass():返回本类的父类,包含泛型参数信息

二.例子

1.ClassA.java

  1. public class  ClassA <T>{   
  2.   
  3.   private T obj;   
  4.   
  5.   public void setObject(T obj) {   
  6.   
  7.     this.obj = obj;   
  8.   
  9.   }   
  10.   
  11.      
  12.   
  13.   public T getObject() {   
  14.   
  15.     return obj;   
  16.   
  17.   }   
  18.   
  19. }  
public class ClassA <T>{ private T obj; public void setObject(T obj) { this.obj = obj; } public T getObject() { return obj; } }

2.Test.java

  1. import java.lang.reflect.Type;   
  2.   
  3. import java.lang.reflect.ParameterizedType;   
  4.   
  5.   
  6.   
  7. public class Test<T> extends ClassA<T>{   
  8.   
  9.   
  10.   
  11.   public static void main(String args[]) throws Exception{   
  12.   
  13.     System.out.println("======getSuperclass======:");   
  14.   
  15.     System.out.println(Test.class.getSuperclass().getName());   
  16.   
  17.        
  18.   
  19.     System.out.println("======getGenericSuperclass======:");   
  20.   
  21.     Type t = Test.class.getGenericSuperclass();   
  22.   
  23.     System.out.println(t);   
  24.   
  25.     if (ParameterizedType.class.isAssignableFrom(t.getClass())) {   
  26.   
  27.       System.out.print("----------->getActualTypeArguments:");   
  28.   
  29.       for (Type t1:((ParameterizedType)t).getActualTypeArguments()) {   
  30.   
  31.         System.out.print(t1 + ",");   
  32.   
  33.       }   
  34.   
  35.       System.out.println();   
  36.   
  37.     }   
  38.   
  39.   }   
  40.   
  41. }  
import java.lang.reflect.Type; import java.lang.reflect.ParameterizedType; public class Test<T> extends ClassA<T>{ public static void main(String args[]) throws Exception{ System.out.println("======getSuperclass======:"); System.out.println(Test.class.getSuperclass().getName()); System.out.println("======getGenericSuperclass======:"); Type t = Test.class.getGenericSuperclass(); System.out.println(t); if (ParameterizedType.class.isAssignableFrom(t.getClass())) { System.out.print("----------->getActualTypeArguments:"); for (Type t1:((ParameterizedType)t).getActualTypeArguments()) { System.out.print(t1 + ","); } System.out.println(); } } }

输出结果:

======getSuperclass======:

ClassA

======getGenericSuperclass======:

ClassA<T>

----------->getActualTypeArguments:T,

发表评论