父类如何获取子类的范型

Posted 一个很帅的男人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了父类如何获取子类的范型相关的知识,希望对你有一定的参考价值。

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);
}

以上是关于父类如何获取子类的范型的主要内容,如果未能解决你的问题,请参考以下文章

第三次发了,反射如何获取子类属性的值

如何使用 linq 从父类和嵌套数组子类中获取值?

父类如何获取子类传递的泛型

C#在父类中获取子类的类名

C#中基类属性值在子类中设置,如何在基类的方法中获取子类设置的值?

java 父类如何在运行期动态获取子类类名