//利用ParameterizedType获取java泛型的参数类型
public class Demo {public static void main(String[] args) {classTest();interfaceTest();}private static void classTest() {MySuperClass<Student, String> mySuperClass = new MySuperClass<Student, String>() {@Overridepublic void onSuccess(Student data) {}};//getClass().getGenericSuperclass()返回表示此 Class 所表示的实体的直接超类的 TypeParameterizedType type = (ParameterizedType) mySuperClass.getClass().getGenericSuperclass();sysoType(type);}private static void interfaceTest() {MyInterface<Student, String> myInterface = new MyInterface<Student, String>() {@Overridepublic void onSuccess(Student data) {}};ParameterizedType type = (ParameterizedType) myInterface.getClass().getGenericInterfaces()[0];sysoType(type);}private static void sysoType(ParameterizedType type) {/*com.bqt.generic.MySuperClass<com.bqt.generic.Student, java.lang.String>class sun.reflect.generics.reflectiveObjects.ParameterizedTypeImplclass com.bqt.generic.Studentclass java.lang.Classclass java.lang.Stringclass java.lang.Classcom.bqt.generic.MyInterface<com.bqt.generic.Student, java.lang.String>class sun.reflect.generics.reflectiveObjects.ParameterizedTypeImplclass com.bqt.generic.Studentclass java.lang.Classclass java.lang.Stringclass java.lang.Class*/System.out.println(type + "\n" + type.getClass());//返回表示此类型实际类型参数的 Type 对象的数组,泛型的参数可能有多个,我们需要哪个就取哪个Type[] targets = type.getActualTypeArguments();for (int i = 0; i < targets.length; i++) {System.out.println(targets[i] + "\n" + targets[i].getClass());}}}
public abstract class MySuperClass<T,V> {
public abstract void onSuccess(T data);}
public interface MyInterface<T,V> {void onSuccess(T data);}
public class Student {
}
利用ParameterizedType获取泛型参数类型的更多相关文章
-
JAVA基础_反射获取泛型参数类型
我经常会想获取参数的实际类型,在Hibernate中就利用的这一点. domain: Person.java public class Person { // 编号 private Long id; ...
-
Gson通过借助TypeToken获取泛型参数的类型的方法
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...
-
Gson通过借助TypeToken获取泛型参数的类型的方法(转)
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...
-
java 编程基础 反射方式获取泛型的类型Fileld.getGenericType() 或Method.getGenericParameterTypes(); (ParameterizedType) ;getActualTypeArguments()
引言 自从JDK5以后,Java Class类增加了泛型功能,从而允许使用泛型来限制Class类,例如,String.class的类型实际上是 Class 如果 Class 对应的类暂时未知,则使 C ...
-
ParameterizedType获取java泛型参数类型
ParameterizedType getClass().getGenericSuperclass() 返回表示此 Class 所表示的实体(类.接口.基本类型或 void)的直接超类的 Type,然 ...
-
利用 js 获取地址栏参数
1.aspx页面,进行页面跳转 window.location.href = "ProviderInfo.aspx?ProviderID="+ProviderID; 2.Provi ...
-
获取List、Set、Map等字段的泛型参数
测试类加单元测试方法,运行结果在注释里面: package temp; import org.junit.Test; import java.lang.reflect.Field; import ja ...
-
java 反射和泛型-反射来获取泛型信息
通过指定对应的Class对象,程序可以获得该类里面所有的Field,不管该Field使用private 方法public.获得Field对象后都可以使用getType()来获取其类型. Class&l ...
-
获取泛型的class 反射
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...
随机推荐
-
[HIMCM暑期班]第3课:一个博弈问题
在一个街道平面图上,住着n个住户.有两个贩卖热狗的商贩,各自想要在街区里摆设一个小摊.每天住户都会去离他家50米范围内的最近的摊点消费.问: 1. 如果两位小贩摆设小摊的顺序有先后(设A先摆,然后B再 ...
-
SQLserver学习(四)——T-SQL编程之事务、索引和视图
今天来分享下T-SQL高级编程中的事务.索引.视图,可以和之前的SQL server系列文章结合起来. 一.事务 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个 ...
-
JavaScript系列----作用域链和闭包
1.作用域链 1.1.什么是作用域 谈起作用域链,我们就不得不从作用域开始谈起.因为所谓的作用域链就是由多个作用域组成的.那么, 什么是作用域呢? 1.1.1作用域是一个函数在执行时期的执行环境. 每 ...
-
C++入门笔记(二)变量和基本类型
变量和基本类型 一.基本内置类型 1.除去布尔类型和扩展的字符型外,其他整型可以分为带符号的和无符号的. 2.与其他整型不同,字符型被分为了三种:char.signed char 和 unsigned ...
-
.NET Core 开源工具 IPTools - 快速查询 IP 地理位置、经纬度信息
快速查询IP信息,支持国内和国外IP信息查询,支持查询经纬度,地理位置最高支持到城市. 1. IPTools.China 快速查询中国IP地址信息,包含国家.省份.城市.和网络运营商.非中国IP只支持 ...
-
Ajax(Asynchronous JavaScript )and xml
JavaScript的两种任务执行模式--同步(synchronous)和异步(Asynchronous) 同步模式 JavaScript的执行环境是单线程的,意味着一次只能执行一个任务,如果有多个任 ...
-
【Hadoop 分布式部署 八:分布式协作框架Zookeeper架构功能讲解 及本地模式安装部署和命令使用 】
What is Zookeeper 是一个开源的分布式的,为分布式应用提供协作服务的Apache项目 提供一个简单的原语集合,以便与分布式应用可以在他之上构建更高层次的同步服务 设计非常简单易于编 ...
- 谷类 cereal
-
Hex Dump In Many Programming Languages
Hex Dump In Many Programming Languages See also: ArraySumInManyProgrammingLanguages, CounterInManyPr ...
-
Linux环境下如何配置IP地址、MAC地址
Linux环境下如何配置IP地址.MAC地址 1.配置IP地址 进入配置IP地址路径,进行修改即可 cd /etc/network vim interface 加入以下内容: iface eth0 i ...