JAVA泛型_JSON
来源:互联网 发布:测试udp端口是否开放 编辑:程序博客网 时间:2024/06/06 03:56
因为Java泛型的擦除并不是对所有使用泛型的地方都会擦除的,部分地方会保留泛型信息。
此例中Base是泛型类,有一个未绑定的泛型类型变量T。
而Derived是非泛型类,并没有任何未绑定的泛型变量;它所继承的不是Base<T>,而是将T绑定为String的Base<String>。
于是,对Derived.class调用getGenericSuperclass(),就可以进一步获取到T所绑定的String类型。
但上面的例子里,如果我们只是要知道String的话,何不直接找个地方记录下String.class呢?
用非泛型类继承泛型类还能做什么事情?
试想,如果我们想在Java程序里用一个变量记录下 Map<String, List<String>> 这样的类型信息,我们可以怎么做?
或许有人会觉得可以这样:
但我们可以这样写:
最典型的地方就是一个非泛型类可以继承一个泛型基类,例如:
public class Base<T> { }public class Derived extends Base<String> { }
此例中Base是泛型类,有一个未绑定的泛型类型变量T。
而Derived是非泛型类,并没有任何未绑定的泛型变量;它所继承的不是Base<T>,而是将T绑定为String的Base<String>。
于是,对Derived.class调用getGenericSuperclass(),就可以进一步获取到T所绑定的String类型。
但上面的例子里,如果我们只是要知道String的话,何不直接找个地方记录下String.class呢?
用非泛型类继承泛型类还能做什么事情?
试想,如果我们想在Java程序里用一个变量记录下 Map<String, List<String>> 这样的类型信息,我们可以怎么做?
或许有人会觉得可以这样:
Class<?> c = Map<String, List<String>>.class;然而这并不符合Java语法,所以不能这样写。
但我们可以这样写:
Type t = new Base<Map<String, List<String>>>() { }.getClass().getGenericSuperclass();Type targ = ((ParameterizedType) t).getActualTypeArguments()[0];
其中Type是java.lang.reflect.Type。这样我们得到的targ表示的就是:
java.util.Map<java.lang.String, java.util.List<java.lang.String>>
Gson的TypeToken
阅读全文
0 0
- JAVA泛型_JSON
- [Java IO]06_JSON操作
- Java中数据解析之_JSON(Android官方内置解析器)
- 78_Json解析
- python_python学习_Json
- 随手笔记javascript篇_JSON
- Ajax_数据格式_JSON(03)
- 黑马程序员_Json学习笔记整理
- 步步为营_Android开发课[12]_Json学习
- JS_对象_数组_json使用
- AJAX操作01_json与xml
- json的学习笔记_json必知必会
- json数据解析_json-lib.jar
- 反射动态创建对象_Json为例
- easyui datagrid 前台批量传递数据到后台_json
- 909422229_JSON数组与JSON对象的创建使用
- 写给自己看的博客_每日随笔_json
- [学习小结]Ajax基本操作_JSON格式&&在jQuery中如何操作
- Tomcat
- 推荐一些坚持原创的公众号
- 我和Linux
- php倒序显示中英文字符串
- android原生APP adb install问题
- JAVA泛型_JSON
- TECHCRUNCH创始人筹1亿美元瑞波对冲基金,称3000亿美元市场只是一个开始比特币酒吧
- JAVA EJB 简单描述
- CentOS双网卡配置默认路由
- Redis常用配置,使用redis之前需要设置的一些参数
- MVC开发模式
- 今天开始写博客啦
- PCH 警告: 无法找到适合的标头停止点位置。
- tomcat服务器自动开启