(ParameterizedType) getClass().getGenericSuperclass().getActualTypeArguments()[0]得到的是什么?

这种写法一般都会在基类中看到,而且是使用了JAVA泛型的,比如我们J2EE中的BaseDAO什么的,请看代码,其实简写了,分开写就明了了。


基类:
import  java.lang.reflect.ParameterizedType;
import  java.lang.reflect.Type;

public   abstract   class  SuperClass < T >   {

    
private Class<T> beanClass;

    @SuppressWarnings(
"unchecked")
    
public SuperClass() {
        
super();
        ParameterizedType parameterizedType 
=  (ParameterizedType) getClass().getGenericSuperclass();
        Type[] types 
= parameterizedType.getActualTypeArguments();
        beanClass 
= (Class<T>) types[0];
    }


    
public Class<T> getBeanClass() {
        
return beanClass;
    }


    
public void setBeanClass(Class<T> beanClass) {
        
this.beanClass = beanClass;
    }

    
    
public static void main(String[] args) {
        SuperClass
<Cat> superClass = new SubClass();
        System.out.println(superClass.getBeanClass());
    }

    
}


子类:
public class SubClass extends SuperClass < Cat > {
   
   
public SubClass() {
       
super();
    }

   
}


class Cat {

   
public Cat() {
       
super();
    }

}


运行SuperClass后控制台会打印:
class com.stos.test.generic.Cat

看到运行结果你可能就清楚了,就是获取实际的泛型类。








你可能感兴趣的:((ParameterizedType) getClass().getGenericSuperclass().getActualTypeArguments()[0]得到的是什么?)