import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.junit.Test;
abstract class BaseDao<T> {
public void getType() {
//Class<E> clazz = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
Type t = getClass().getGenericSuperclass();
ParameterizedType p = (ParameterizedType) t ;
Class<T> c = (Class<T>) p.getActualTypeArguments()[0];
System.out.println(c.getName()); //java.lang.String
}
}
public class SubDao extends BaseDao<String> {
@Test
public void test1() {
getType();
}
}
本文介绍如何使用Java的泛型和反射API来实现自定义类型的获取过程,通过实例展示从抽象基类到具体子类类型转换的过程。
618

被折叠的 条评论
为什么被折叠?



