ParameterizedType 它是jdk提供的参数化类型,包括了如下

请求参数,和响应参数都是 参数话类型。记住凡是含有<T>中的都是参数话类型。

public static <T,U> void applyMethod(Map.Entry<T,U> mapEntry){

}

ParameterizedType  里的三个方法解释

Type getOwnerType(); 如果这个类是某个类的内部类,则拥有者就为某个类  Map.Entry<T,U> mapEntry  Map为 ownerType,Entry为 rawType, T,U 为实际类

Type getRawType();  标识原始类,如Response<Person> list的实现类,Response.class即为原始类型,

Type[] getActualTypeArguments() 包装类里的泛型,如Response<Person> Person.class 一般类反省类。

一般 要自己写一个ParameterizedType 的实现类(如果有现成的则可以不用自己实现),然后给json 转为对象,来使用

下面实例中的红色部分,为spring web MappingJackson2HttpMessageConverter 中的实现。

        Person person=new Person();
person.setName("zhou");
person.setAddress("zhou");
person.setSex(1);
List<Person> list= Lists.newArrayList(person,person);
ObjectMapper objectMapper=new ObjectMapper();
String listString=objectMapper.writeValueAsString(list);
System.out.println(listString);
//JavaType javaType=objectMapper.getTypeFactory().constructParametrizedType(ArrayList.class, ArrayList.class, Person.class);
ParameterizedTypeImpl parameterizedTypeImpl=new ParameterizedTypeImpl(null, ArrayList.class, Person.class);
JavaType javaType=objectMapper.getTypeFactory().constructType(parameterizedTypeImpl);
List<Person> list1=objectMapper.readValue(listString, javaType);
for (Person person2 : list1) {
System.out.println(person2);
}

ParameterizedType 使用方法的更多相关文章

  1. spring 工具类大集合

    接以前的文章 apache-commons 常用工具类 和文章 apache-commons 工具类扩展 小家 Spring 对 spring 的工具类做了详细的介绍(一) 这里我抽出一些好用的类,不 ...

  2. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  3. 使用java泛型设计通用方法

    泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 因此我们可以利用泛型和反射来设计一些通用方法. 现在有2张表, 一张user表和一张stu ...

  4. <五>JDBC_利用反射及JDBC元数据编写通用的查询方法

    此类针对javaBean类写了一个通用的查询方法,List<javaBean> 通用查询更新中...:通过学习,深刻体会到学会反射就等于掌握了java基础的半壁江山! 一.使用JDBC驱动 ...

  5. 通过反射获取父类泛型的Class对象 ParameterizedType

    ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0] 这个方法这么用啊,返回什么,请给 ...

  6. dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)

    jsp的三个指令为:page,include,taglib... 建立一个jsp文件,建立起绝对路径,使用时,其他jsp文件导入即可 导入方法:<%@ include file="/c ...

  7. DAO模型设计实现数据的 增,删,改,查方法

    连接数据库方法,及反射获取数据,以前的方法相同,测试类 是在DAO模型下建立的 ------------------------------------------------------------ ...

  8. 利用反射及jdbc元数据实现通用的查询方法

    ---------------------------------------------------------------------------------------------------- ...

  9. 一种好的持久层开发方法——建立BaseDao和BaseDaoImpl

    使用hibernate开发持久层时,我们会发现:虽然entity类的含义和需求不同,其对应的Dao层类对应的方法也是不同的.但是有许多方法操作确实相同的.比如实体的增加,删除,修改更新,以及许多常用的 ...

随机推荐

  1. Linux下run文件的直接运行

    比如realplay.run 安装方法如下 chmod +x realplay.run ./realplay.run 然后他就会执行安装了,在过程中可能会要求你输入yes或no 安装完后就可以用了 , ...

  2. python之路之线程,进程,协程2

    一.线程 1.创建线程 2.主线程是否等待子线程 t.setDaemon(Ture/False):默认是false,等待子线程完成,ture,表示不等待子线程结束 3.主线程等待,子线程执行 join ...

  3. java连接mysql数据库8.0以上版本过程中遇到的坑

    来自:https://blog.csdn.net/u013276277/article/details/80255468 首先,我居然不能用navicat客户端连接上mysql8.0数据库报1251错 ...

  4. jvm(6):JMM

    typora-root-url: ./ CPU多核并发缓存架构 JMM(Java线程内存模型)底层实现原理 基于CPU缓存模型建立的,屏蔽掉了底层不同计算机的区别. 所有的共享变量都存储在主内存.每条 ...

  5. 如何做好 Android 端音视频测试?

    在用户眼中,优秀的音视频产品应该具有清晰.低延时.流畅.秒开.抗丢包.高音效等特征.为了满足用户以上要求,网易云信的工程师通过自建源站,在SDK端为了适应网络优化进行QoS优化,对视频编码器进行优化, ...

  6. Iris配置

    package main import ( "github.com/kataras/iris" "os" "encoding/json" & ...

  7. setInterval 和 setTimeout 定时器

    前端定时器 setInterval 和 setTimeout setInterval 循环执行 循环执行就是设置一个时间间隔,每过一段时间都会执行一次这个方法,直到这个定时器被销毁掉. 用法是setI ...

  8. GOM引擎脚本 时间段内调整人物属性

    功能: 调整人物属性 格式: ChangeHumAbility 属性(1-20) 操作符(+ = -) 效果(1-65535) 时间秒说明: 属性1-12分别对应人物 防御下限 防御上限 魔御下限 魔 ...

  9. python开发基础02-字符串操作方法练习题

    1.执行 Python 脚本的两种方式 python解释器 py文件  #!/usr/bin/env python 进入python解释器,便捷命令并执行 pycharm或其他pythonIDE sh ...

  10. Django流程-以登录功能为例

    Django流程-以登录功能为例 一.注意点 1.新创建的app一定要先去settings.py注册 简写:'app01' 完整:'app01.apps.App01Config' 2.启动Django ...