您的位置:首页 > 编程语言 > Java开发

java 得泛型真正类型

2017-12-31 20:37 267 查看
1、得泛型类实例真正类型     
import java.lang.reflect.ParameterizedType;

public class T1<T> {

private Class classt;

public T1() {
ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
this.classt = (Class) type.getActualTypeArguments()[0];
System.out.println(this.classt);
}

}
public class User(){
}
public class T2  extends T1<User> {public static void main(String[] args) {T2  t = new T2 ();}}
2、得泛型方法泛型参数真正类型
import java.lang.reflect.Method;import java.lang.reflect.ParameterizedType;import java.util.ArrayList;import java.util.Date;import java.util.List;public class GenericalReflection {private List<Date> dates = new ArrayList<Date>();public void setDates(List<Date> dates) {this.dates = dates;}public static void main(String[] args) {final Method[] methods = GenericalReflection.class.getMethods();for (final Method m : methods) {if (m.getName().equals("setDates")) {//拿到方法的第一个参数的泛型对象,因为这个方法只有一个参数.//这就是面向对象编程,所有的一切都是对象。final ParameterizedType pType = (ParameterizedType) m.getGenericParameterTypes()[0];//拿到这个参数原始类型名称System.out.println(((Class<?>) pType.getRawType()).getName());//拿到这个参数的泛型的名称System.out.println(((Class<?>) pType.getActualTypeArguments()[0]).getName());}}}}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: