Gson 使用new TypeToken<List<String>>(){}.getType() 为什么有 {}?

前言:使用 gson 时,不明白为什么有这种写法:new TypeToken<List<String>>(){}.getType(),所以来解惑。最终发现其实就是自己的 java 基础没学好。。。。

1、new TypeToken<List<String>>(){}.getType() 为什么有 {}?

  为什么这样就可以new一个不能访问的类对象呢。按照理解,不再同一个包下(Gson下的类),时不能直接new的。但是神奇的是只要加一个{}就可以了。

  其实是这样的这里new的并不是TypeToken对象,而是在此处定义了一个匿名类。该匿名类继承自TypeToken。并对该匿名类进行定义{} 里面什么都没有写。因为我们只需要用到父类的一个public方法而已。

2、为什么Gson 的TypeToken 个构造是protect而非public?

  TypeToken类的作用就是希望你直接使用 new TypeToken<List<String>>(){}(而不是new TypeToken())来规避JAVA的类型擦除

参考其它文章,可得知Gson 到底如何使用?如何进一步封装?

原文地址:https://www.cnblogs.com/yuxiaole/p/9563320.html

时间: 2024-10-10 22:25:09

Gson 使用new TypeToken<List<String>>(){}.getType() 为什么有 {}?的相关文章

Gson通过借助TypeToken获取泛型参数的类型的方法(转)

最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,我们无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型). 但是有的时候,我们确实需要获知泛型参数的类型,比如将使用了泛型的Java代码序列化或者反序列化的时候,这个时候问题就变得比较棘手. class Foo<T>

Gson通过借助TypeToken类来解决这个问题

最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,我们无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型). 但是有的时候,我们确实需要获知泛型参数的类型,比如将使用了泛型的Java代码序列化或者反序列化的时候,这个时候问题就变得比较棘手. class Foo<T>

Gson通过借助TypeToken获取泛型参数的类型的方法

最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,我们无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型). 但是有的时候,我们确实需要获知泛型参数的类型,比如将使用了泛型的Java代码序列化或者反序列化的时候,这个时候问题就变得比较棘手. class Foo<T>

利用Gson将一个对象转化成String

今天在弄版本更新的重构,居然遇到这么一个问题,差点没有单独写一个方法获取字符串,多亏Gson!      很简单,两句话:      其中entity是自己定义的一个类的对象 <strong> Gson gson = new Gson(); String entityToStr = gson.toJson(entity);</strong>

Gson Expected BEGIN_ARRAY but was STRING

这个问题自己对照Bean类, 原因出在Sting 和List 的转换错误 把集合改成数组即可 原文地址:https://www.cnblogs.com/dubo-/p/8301981.html

Json,Gson,FastJson解析笔记

Json 1.将JavaBean转换成Json对象: [java]  view plain  copy public static String CreatJsonFromObject(Object key,Object value) { JSONObject JObj =new JSONObject(); JObj.put(key, value); return JObj.toString(); } 2.解析Json: [html]  view plain  copy public stati

Gson和Fastjson

1.PersonBean package com.louis.fastjsondemo; /** * Created by Administrator on 2016/2/26. */ public class PersonBean { private int id; private String name; private String address; public int getId() { return id; } public void setId(int id) { this.id

json解析之gson

Gson是Google的一个开源项目,可以将Java对象转换成JSON,也可能将JSON转换成Java对象. Gson里最重要的对象有2个Gson 和 GsonBuilder Gson有2个最基本的方法 1) toJson() – 转换java 对象到JSON 2) fromJson() – 转换JSON到java对象 对于泛型对象,使用fromJson(String, Type)方法来将Json对象转换成对应的泛型对象 new TypeToken<>(){}.getType()方法取得Typ

Gson 使用总结 高级用法

Gson基本用法 参考:http://www.jianshu.com/p/e740196225a4 Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化. //基本数据类型的解析 int i = gson.fromJson("100", int.class); //100 boolean b = gson.fromJson("true", boolean.class); // true String