ice world

There is nothing too difficult if you put your heart into it.
posts - 104, comments - 103, trackbacks - 0, articles - 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

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








Feedback

# re: (ParameterizedType) getClass().getGenericSuperclass().getActualTypeArguments()[0]得到的是什么?  回复  更多评论   

2015-10-12 17:11 by fsfasf
傻屌

# re: (ParameterizedType) getClass().getGenericSuperclass().getActualTypeArguments()[0]得到的是什么?  回复  更多评论   

2015-10-12 17:17 by fsfasf
你妈灵车漂移

只有注册用户登录后才能发表评论。


网站导航: