打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java5如何得到泛型的类型参数
userphoto

2008.08.20

关注
 

java5如何得到泛型的类型参数

直接上代码:
父类:
Java代码
  1. import java.lang.reflect.ParameterizedType;   
  2. /**  
  3.  * 要得到T.class,必须要有一个子类  
  4.  *   
  5.  *  
  6.  * @param <T>  
  7.  * @param <String>  
  8.  */  
  9. public class GenericTest<T,String> {   
  10.     Class<T> entityClass;   
  11.   
  12.     /**  
  13.      * 得到泛型参数的类型  
  14.      *   
  15.      */  
  16.     public GenericTest() {   
  17.            
  18.         ParameterizedType type = (ParameterizedType) this.getClass()   
  19.                 .getGenericSuperclass();   
  20.   
  21.         entityClass = (Class<T>) type.getActualTypeArguments()[1];   
  22.         System.out.println("type=="+type);   
  23.         System.out.println("entityClass=="+entityClass);   
  24.         System.out.println("getOwnerType=="+type.getOwnerType());   
  25.         System.out.println("getRawType=="+type.getRawType());   
  26.     }   
  27.   
  28.     protected String getV() {   
  29.         return null;   
  30.     }   
  31. }  


子类:
Java代码
  1. /**  
  2.  * T.class是不存在的,所以的不到<br>  
  3.  * 但是在父类中可以得到<Long, String>的具体类型。  
  4.  */  
  5.   
  6. public class GenericTestChild<T> extends GenericTest<Long, String> {   
  7.     Class<T> clazz;   
  8.   
  9.     public GenericTestChild() {   
  10.   
  11.         // ---T.class是不存在的,所以下面的代码会有错误   
  12.         /**  
  13.          * ParameterizedType type = (ParameterizedType) this.getClass()  
  14.          * .getGenericSuperclass();  
  15.          *   
  16.          * clazz = (Class<T>) type.getActualTypeArguments()[0];  
  17.          * System.out.println("type==" + type);  
  18.          * System.out.println("entityClass==" + entityClass);  
  19.          * System.out.println("getOwnerType==" + type.getOwnerType());  
  20.          * System.out.println("getRawType==" + type.getRawType());  
  21.          */  
  22.     }   
  23.   
  24.     public static void main(String args[]) {   
  25.   
  26.         GenericTestChild<Long> gt = new GenericTestChild<Long>();   
  27.   
  28.     }   
  29.   
  30. }  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
古月白狐 残空望月 万杯不醉 千月星痕 Java泛型的运用
关于Java如何读取泛型类型参数
泛型40-43
Classworking 工具箱: 反射泛型
JAVA反射总结
java 泛型 深入
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服