JAVA1.5 关于解决泛型<T>当中无法获得class的问题
在讨论这个问题之前,首先大家达成共识,泛型当中是不是T.class是不存在的?答案是YES。
T.class是一个第一个想到,但是真是不存在的用法。
于是乎,聪明的你,在baidu和google上搜呀搜,看有没有解决的方案,你可能会遇到大部分的帖子,
用反射的方法获得T的class,我试过了,貌似不行。不置可否,我先把众人的反射方法贴出来:
http://stackoverflow.com/questions/4837190/java-generics-get-class
- Type genType = getClass(); System.out.println(genType);
- Type[] params = (Type[])((ParameterizedType)genType).getActualTypeArguments();
- Class<T> entityClass = (Class<T>) params[0];
当然,你可以继续搜,很多诸如此类的解决方案。
但是,我想说的是,是不是一定要用这个呢?
既然不能得到T.class,那就把类的class的传进方法里面吧,这种方法不见得有多么的笨拙。
反而挺优雅的。
- public class JSONHandler<T> {
- private Class<T> _entityClass;
- public JSONHandler(Class<T> entityClass){
- this._entityClass=entityClass;
- }
好,每次new一个实例的时候,都把Object.class穿进去,何乐而不为呢?
- JSONHandler<Weibo> weiboHandler=new JSONHandler<Weibo>(Weibo.class);
(⊙v⊙)嗯,那就这样子先吧,终于解决了一个问题。
转载于:https://blog.51cto.com/6221123/1121494