当前位置: 首页 > news >正文

wordpress知名中国网站网站域名是什么东西

wordpress知名中国网站,网站域名是什么东西,page如何转换为wordpress,wordpress种子站Jackson是一个比较流行的Json序列化和反序列化框架。本文以Jackson为例介绍TypeReference实现涉及泛型的反序列化,及TyperReference的实现原理。对于获取泛型类型信息的场景,TypeReference是一个可以参考的通用解决方案。 Jackson ObjectMapper的readVa…

Jackson是一个比较流行的Json序列化和反序列化框架。本文以Jackson为例介绍TypeReference实现涉及泛型的反序列化,及TyperReference的实现原理。对于获取泛型类型信息的场景,TypeReference是一个可以参考的通用解决方案。

Jackson ObjectMapper的readValue可以将Json字符串反序列化为Java对象。

例:如将下列Json串反序列化为List<UserResource>类型。

Json串:

[{"id":null,"name":" ","age":500,"gender":false,"email":"email","employed":true,"salary":10}
]

UserResource实体类:

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserResource {private UUID id;private String name;private int age;private boolean gender;private String email;private boolean employed;private BigDecimal salary;
}

1)理想的实现方式:

理想的实现方式是告诉ObjectMapper的readValue方法,我要的是List<UserResource>,帮我反序列化成这个类型。

List<UserResource> list = new ObjectMapper().readValue(userResourcesStr, List<UserResource>.class);

现实的编译器告诉你这不行,Cannot select from parameterized type. 也很好理解,Java编译器认为List是Class,而List则不是。

2)换一种实现方式

既然不能用List<Resource>.class,那如果我告诉ObjectMapper的readValue方法,我要的是LIst类型,但返回值类型是List<UserResource>,会发生什么呢?

List<UserResource> list = new ObjectMapper().readValue(userResourcesStr, List.class);

这时候倒没有编译错误,但是会有警告:Unchecked assignment: 'java.util.List' to 'java.util.List<UserResource>',显然ObjectMapper并不能反序列化为UserResource类型,而是LinkedHashMap类型。如下图所示:

在这里插入图片描述
3)TypeReference的实现方式

ObjectMapper提供了readValue(String content, TypeReference valueTypeRef)接口,第二个参数为new一个TypeReference的子类实例:new TypeReference<List<UserResource>>(){}。泛型抽象类TypeReference用于通过子类获取完整的泛型类型信息。

在这里插入图片描述

List<UserResource> list = new ObjectMapper().readValue(userResourcesStr, new TypeReference<List<UserResource>>(){});

在这里插入图片描述
4)TypeReference实现原理

上例中new TypeReference<List<UserResource>>(){}子类的实例,TypeReference源码部分比较简单,主要逻辑是,通过getClass().getGenericSuperclass();获取父类中的参数化类型(ParameterizedType)。

这部分不清楚可以看:Java 中的Type类型及其实现【学习记录】

TypeReference主要源码:

protected TypeReference()
{Type superClass = getClass().getGenericSuperclass();_type = ((ParameterizedType) superClass).getActualTypeArguments()[0];
}

getGenericSuperclass返回一个Type类型的对象,代表实体(class,interface,primitive type or void)的直接父类,如果父类是参数化类型,则返回的Type对象可准确反应源码中使用的实际type参数。

Class的genericInfo:

在这里插入图片描述
5)总结:

  • Jackson ObjectMapper 提供了TypeReference支持对泛型对象的反序列化;
  • 对于获取泛型类型信息的场景,TypeReference是一个可以参考的通用解决方案。
http://www.yayakq.cn/news/634592/

相关文章:

  • 早期网站开发用的技术有哪些可以做头像的网站
  • 餐饮 公司 网站建设软件工程课程设计课程网站建设
  • 永久免费网站模板怎么去建一个网站
  • 网站后台ftp替换图片怎么做制作商城网站公司
  • 做国外网站赚钱自己的卡盟网站怎么做分站
  • 开发做一个网站需要多少钱网站维护运营主要是做什么的
  • 网站开发建设流程长沙网站建设商城
  • 做网站公司q房网微信视频号推广价格
  • 济南做网站优化磁力下载
  • wordpress订单邮件优化技术服务
  • 网站建设zrhskjWordPress 采集文章 图片
  • 微信网站建设新闻推广计划a设置了短语否定匹配关键词为招聘
  • 建设银行首页 网站河间建设网站
  • 网站没有备案可以做百度推广吗国外黄冈网站推广软件有哪些
  • 去哪网网站设计风格企业做定制网站的好处
  • 网站怎么做域名实名认证在线识图
  • 区域文化网站建设方案天津网站建设索王道下拉
  • 迈网科技 官方网站wordpress前台发文积分
  • 在线手机网站制作网站设计科技有限公司
  • 创建网站费用湖北城乡住房建设厅网站
  • 商丘旅游网站的建设马云做中国最大的网站
  • 廊坊网站建设费用烟台网站制作网站
  • 企业营销型网站建设的可行性分析深圳建设网站速成班
  • 常州网站建设教程零售app开发公司
  • 汉中专业网站建设开发大牌装修公司
  • 做包装盒子的厂家哪个网站自己做的网站怎么放上网
  • 站长之家查询的网址广东网站备案多长时间
  • 关于一学一做的短视频网站网站建设准备
  • 网站地图做计划任务盐城网站开发市场
  • 三位数的域名网站好的网站或网页