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());}}}}
相关文章推荐
- Java知识点拾遗3-类型信息和泛型
- 初学Java,泛型类型通配符(三十七)
- Java 5.0泛型编程之泛型类型(1)
- Java 8 新特性之泛型的类型推导
- java中泛型学习2之类型参数(T)
- Java 5.0 泛型之 使用泛型统一传入的参数类型
- Java中泛型 类型擦除
- 掌握 Java 泛型类型(四)
- Java泛型-类型擦除
- java 用泛型参数类型构造数组详解及实例
- Java获取泛型参数的类型的方法
- Java返回类型泛型的用法小结
- Java反射技术绕过ArrayList泛型编译期间检查, 将不同类型数据存到一起
- Java通过反射获取泛型实际类型总结(什么可获取,什么不可获取)
- Java 类型信息 —— 获取泛型类型的类对象(.class)
- Java语法糖的味道:泛型与类型擦除
- java 泛型的内部原理:类型擦除以及类型擦除带来的问题
- java 泛型与类型擦除
- java 通过反射获取泛型的类型
- java 通过反射获取泛型的类型