new TypeToken<List<AppVersion>>(){}.getType()是什么意思
来源:互联网 发布:博罗政府网络问政 编辑:程序博客网 时间:2024/06/15 18:54
1. 项目中代码:List<AppVersion> redisList = new Gson().fromJson(json, new TypeToken<List<AppVersion>>(){}.getType());
2. fromJson方法就是下面这个方法,将一个Json数据转换为对象。
提供两个参数,分别是json字符串以及需要转换成对象的类型。
在我们项目中是把Json格式的数据转换成List<AppVersion> 类型。
@SuppressWarnings("unchecked") public <T> T fromJson(String json, Type typeOfT) throws JsonSyntaxException { if (json == null) { return null; } StringReader reader = new StringReader(json); T target = (T) fromJson(reader, typeOfT); return target; }
3. new TypeToken<List<AppVersion>>(){}.getType() ,这个位置要的参数是一个Type,表示是xxx类型,但是Type是个接口,如下:
public interface Type { /** * Returns a string describing this type, including information * about any type parameters. * * @implSpec The default implementation calls {@code toString}. * * @return a string describing this type * @since 1.8 */ default String getTypeName() { return toString(); }}
new XXX(); 这样是一个构造函数,但是接口是不能直接new的,所以这时用到了匿名内部类,实现接口成为一种具体的类型。
TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。
先调用TypeToken<T>的构造器得到匿名内部类,再由该匿名内部类对象调用getType()方法得到要转换成的type,
在此就是得到的type就是列表类型:List<AppVersion>类型。
new TypeToken<List<AppVersion>>(){}.getType() 就是说要把Json数据转换成List<AppVersion>类型的结果。
4.匿名内部类使用还有如:
new TypeToken<LinkedList<User>>(){}匿名内部类常用在监听里面,比如我们给一个按钮加监听:JButton btn = new JButton("test"); btn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {}});
btn.addActionListener()方法接受的是一个ActionListener类型的对象,而ActionListener是一个接口,不能直接new。
所以本来这里该写一个类实现ActionListener接口,然后给他传参为实现类对象,
但是太麻烦了,我们直接在这里创建了那个实现类,之所以叫匿名,就是因为new的时候实现为一个类就直接调方法了,根本没有给这个类取名。
5. Gson提供的fromJson()方法是实现从Json数据到Java实体的方法,可以把Json数据转成单一实体对象类型、对象列表类型、其他结构类型。
比如:
第一种 json字符串为:[{“name”:”name0”,”age”:0}] 转成Person类型:
- 1
- 1
第二种,转换成列表类型:
参考:http://blog.csdn.net/alexxu1988/article/details/46685433
http://blog.csdn.net/jonemill/article/details/39084809
- new TypeToken<List<AppVersion>>(){}.getType()是什么意思
- 关于GSON中 java.lang.reflect.Type type = new TypeToken<List<Object>>(){}.getType();
- Pb(100) The method getType() is undefined for the type new TypeToken<List<String>>(){}
- Type listType = new TypeToken<LinkedList<User>>(){}.getType();
- 使用new TypeToken(){}.getType(),报错Missing type parameter.(我是在使用json2Map工具类时出现的)
- TypeToken
- gettype
- new String[]{}是什么意思?
- +new Date是什么意思?
- php new self()是什么意思
- public void Delete<T>(List<T> EntityList) where T : class, new() 这是什么意思
- java中List<?>是什么意思?
- list-style:none是什么意思
- android list转对象 数组报文转list 接口返回数组 TypeToken
- List<Map<String, Object>>是什么意思
- TypeToken解析
- class A<T>where T:new()是什么意思
- class A<T>where T:new()是什么意思
- 洛谷 P1196 银河英雄传说
- Windows 配置Gradle caches下载路径
- Java 枚举类的基本使用
- PHP精选面试题
- String, StringBuilder, StringBuffer三者区别
- new TypeToken<List<AppVersion>>(){}.getType()是什么意思
- ”parse count (total)" and "session cursor cache hits"关系的文章
- java集合架构____HashMap源码分析
- BZOJ4537 [Hnoi2016]最小公倍数 (可撤销&&可持久化并查集学习笔记)
- Eclipse 常用快捷键
- makefile的选项CFLAGS、CPPFLAGS、LDFLAGS和LIBS的区别
- android shape的使用
- Loadrunner之HTTP接口测试
- 2017/2/21 学习html的第五天