把项目中的代码抽出父类,有时需要用泛型。如果此时涉及到hibernate等数据库操作,比如"select u from User u",那么User怎么怎么表示出来呢?以下是研究的代码:
父类:
import static org.junit.Assert.*;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.junit.Test;
public class Father<T> {
public Father() {
// TODO Auto-generated constructor stub
System.out.println(this.getClass());//class mypss.children
System.out.println(this.getClass().getSuperclass());//mypss.Father
System.out.println(this.getClass().getGenericSuperclass());//mypss.Father<java.lang.Long> 带上了泛型
ParameterizedType parameterizedType = (ParameterizedType) this.getClass().getGenericSuperclass();
Type[] actualTypes = parameterizedType.getActualTypeArguments();
System.out.println(actualTypes[0]);//class java.lang.Long 真实的泛型类型,Long
Class<T> actualType = (Class<T>) actualTypes[0];
System.out.println(actualType);
}
}
子类:
package mypss;
import static org.junit.Assert.*;
import org.junit.Test;
public class children extends Father<Long> {
@Test
public void testde() throws Exception {
System.out.println("子类");
}
}
原文:http://www.cnblogs.com/yintingting/p/6872735.html