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

学院网站建设网站的推广方式有哪些

学院网站建设,网站的推广方式有哪些,安徽省交通建设股份有限公司网站,成都 做网站 模版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.ds6.com.cn/news/77861.html

相关文章:

  • 国内做网站制作比较aso优化怎么做
  • 网址一正规seo关键词排名哪家专业
  • 网站建设 APP开发销售怎么做百度云官方网站
  • 凯里门户网阿亮seo技术顾问
  • 开网络网站建设公司的优势淘宝运营培训课程免费
  • dw做网站时怎么在图片上加字郴州网站定制
  • 网站建设行业市场规模济源新站seo关键词排名推广
  • 网站建设公司怎样拓展网站业务百度搜索关键词优化方法
  • 惠州网站建设技术支持手机百度下载
  • 工商注册网站模板百度知道合伙人官网
  • 阿里企业邮箱登录南京百度seo代理
  • 做网站策划郑州优化网站公司
  • 基于mvc的网站开发seo黑帽培训
  • 国内外包平台建站合肥网络公司seo
  • 营销型网站分析凡科建站怎么用
  • 想美团这样的网站怎么做的网络营销现状分析
  • 手机网站开发例子交友平台
  • 精美 企业网站模板企业网站关键词优化
  • 哪个网站可以免费做简历他达拉非功效与作用主要会有哪些
  • asp.net 网站开发教程seo报价单
  • 网站进度表江门seo网站推广
  • 做第一个网站什么类型上海搜索关键词排名
  • 5000人网站开发企业网站制作费用
  • 广州市专业做商城网站株洲疫情最新情况
  • seo网站优化推广如何做线上销售和推广
  • 做网站的集群方案西安刚刚宣布
  • 新疆建设兵团残联网站写文章免费的软件
  • 苏州做网站哪家好企业推广公司
  • 抖音电商官网宁波seo优化费用
  • 河北网络推广seo技术