码迷,mamicode.com
首页 > 其他好文 > 详细

父类如何获取子类的范型

时间:2017-04-01 16:52:42      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:etc   param   string   type   java内存   sys   cep   ber   构造   

1,spring中一配置了<bean></bean>再启动项目的时候就会自动创建该类的实例。

2,java内存那块还得继续深入。

3,上代码:

  1. public class subParam extends param<myclass, myinvoke> {  //subParam 继承了param 。param里面俩范型
  2.     public static void main(String[] args) throws Exception{  
  3.         subParam  s = new subParam();  //子类一实例化,父类的构造函数里有乾坤
  4.     }  

 

  1. public class param<T1, T2> {  
  2.     class A {}  
  3.     class B extends A {}  
  4.       
  5.     private Class<T1> entityClass;  
  6.     protected param (){  
  7.         Type type = getClass().getGenericSuperclass();  //先得到当前类的Class,在得到当前类的父范型Class
  8.         System.out.println("getClass()==" + getClass());  
  9.         System.out.println("type = " + type);  
  10.         Type trueType = ((ParameterizedType)type).getActualTypeArguments()[0];  //强转为 可范型化的类型,得到父范型的真实的类的参数。
  11.         System.out.println("trueType1 = " + trueType);  
  12.         trueType = ((ParameterizedType)type).getActualTypeArguments()[1];  
  13.         System.out.println("trueType2 = " + trueType);  
  14.         this.entityClass = (Class<T1>)trueType;  
  15.           
  16.           
  17.         B t = new B();  
  18.         type = t.getClass().getGenericSuperclass();  
  19.       
  20.         System.out.println("B is A‘s super class :" + ((ParameterizedType)type).getActualTypeArguments().length);  //有时候强转会报异常。
  21.     }  
  22.       
  23. }  

public static <T> Class<T> getClassGenricType(final Class clazz) //第一个<T> 只是声明范型,没有别的意思。
{
return getClassGenricType(clazz, 0);
}

父类如何获取子类的范型

标签:etc   param   string   type   java内存   sys   cep   ber   构造   

原文地址:http://www.cnblogs.com/slhzxm16/p/6656588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!