前言:使用 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 到底如何使用?如何进一步封装?

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

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

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...

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

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...

  3. Android JSON、GSON、FastJson的封装与解析

    声明: 1.本帖只提供代码,不深入讲解原理.如果读者想要深入了解,那就不要在这个帖子上浪费时间了 2.客户端用的是Google官方的Volley访问服务器,具体了解Volley请戳 这里 3.本帖三种 ...

  4. Gson的使用

    GSON:是Google开发的Java API,用于转换Java对象和Json对象 <dependency> <groupId>com.google.code.gson< ...

  5. Gson处理

    public class GsonTools { public GsonTools(){} public static <T> T getPerson(String jsonString, ...

  6. Android JSON,Gson,fastjson实现比较

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  7. Gson的基本使用方法(google)

    原文:http://www.jianshu.com/p/e740196225a4 原作者:怪盗kidou 依赖包配置: <dependency> <groupId>com.go ...

  8. Json,Gson,FastJson解析笔记

    Json,Gson,FastJson解析笔记 1.将JavaBean转换成Json对象: public static String CreatJsonFromObject(Object key,Obj ...

  9. 使用Google 的 gson方式解析json

    gson支持解析的类型还是比较全面的,包括JavaBean,List<JavaBean>,List<String>,Map等,使用起来也是比较方便,下面根据代码示例给出总结: ...

随机推荐

  1. Masnory 学习

    1:typeof <一元运算符,放在一个运算数之前,运算数可以是任何类型, 用于获取括号中的运算数的数据类型如:NSString CGFloat Int NSArray等> 2:  str ...

  2. python脚本 读取excel格式文件 并进行处理的方法

    一.安装xlrd模块 pip install xlrd 二.读取excel文件 try: excel_obj = xlrd.open_workbook("文件路径") except ...

  3. Android之常用类库

    Android之常用类库 android.app :提供高层的程序模型.提供基本的运行环境android.content :包含各种的对设备上的数据进行访问和发布的类android.database ...

  4. JavaScript 之基础知识

    JavaScript 基础知识 JavaScript 是属于网络的脚本语言! JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用. JavaS ...

  5. Xcode 10 如何创建自定义 Snippet

     或者 

  6. Jmeter中文乱码

    方法一 添加后置管理器BeanShell PostProcessor 填入prev.setDataEncoding("UTF-8") 方法二 在请求的 Content encodi ...

  7. POJ 2304

    #include<iostream>// cheng da cai zi 11. 18 解锁问题 using namespace std; #define f 360 int main() ...

  8. RabbitMQ : 几种Exchange 模式

    AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列.生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机.先由Exchange来接收,然后Exchang ...

  9. 数据库MySQL(课下作业,必做)

    数据库MySQL(课下作业,必做) 题目要求: 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入 ...

  10. hive算法报错..

    hive普通语句查询报错.. 查到以下设定项,,附加在语句前执行成功.. 但是有可能没有真正的执行.. 试到最后使用标红的三行附加在语法前执行成功 set hive.execution.engine= ...