Java 泛型参数的获取
来源:互联网 发布:数据流程图编辑手机版 编辑:程序博客网 时间:2024/05/16 23:57
Gson中序列化带泛型的类型的方式:
其中Type为java.lang.reflect.Type接口
Returns an array of Type objects representing the actual type arguments to this type.
Returns a Type object representing the type that this type is a member of.
Returns the Type object representing the class or interface that declared this type.3个方法,用于获取泛型类型。
Type fooType = new TypeToken<Foo<Bar>>() {}.getType(); gson.toJson(foo, fooType); gson.fromJson(json, fooType);
其中Type为java.lang.reflect.Type接口
ParameterizedType为Type的子接口包含
Type[]
getActualTypeArguments()
Returns an array of Type objects representing the actual type arguments to this type.
Type
getOwnerType()
Returns a Type object representing the type that this type is a member of.
Type
getRawType()
Returns the Type object representing the class or interface that declared this type.3个方法,用于获取泛型类型。
原理:
对于一个类如果继承了一个带具体泛型参数的泛型类,则JVM可以获取其父类的泛型参数。
public static void main(String[] args) { // 可以获取泛型参数String class AnonymousArrayListA extends ArrayList<String> { } AnonymousArrayListA aa = new AnonymousArrayListA(); Class typeA = (Class) ((ParameterizedType) aa.getClass().getGenericSuperclass()).getActualTypeArguments()[0]; System.out.println(typeA.getSimpleName()); // 无法获取泛型参数 class AnonymousArrayListB<T> extends ArrayList<T> { } AnonymousArrayListB<String> bb = new AnonymousArrayListB<String>(); try { Class typeB = (Class) ((ParameterizedType) bb.getClass().getGenericSuperclass()).getActualTypeArguments()[0]; System.out.println(typeB.getSimpleName()); } catch (Exception e) { System.out.println("Get type failed."); } }Type fooType = new TypeToken<Foo<Bar>>() {}.getType(); 即通过继承了一个包含具体泛型参数的TypeToken的匿名类来获取Foo<Bar>这个类型,用于序列化/反序列化。reference:http://www.artima.com/weblogs/viewpost.jsp?thread=208860
- Java 泛型参数的获取
- Java获取泛型的类型参数
- Java获取泛型参数的类型的方法
- Java获取泛型参数的类型的方法 .
- Java获取泛型参数的类型的方法
- java中通过反射获取泛型的参数类型
- Java 运行时如何获取泛型参数的类型
- Java 运行时如何获取泛型参数的类型
- Java 运行时如何获取泛型参数的类型
- 泛型参数的获取
- ParameterizedType获取java泛型参数类型
- ParameterizedType获取java泛型参数类型
- ParameterizedType获取java泛型参数类型
- 获取java泛型参数类型
- ParameterizedType获取java泛型参数类型
- java中获取泛型参数类型
- ParameterizedType获取java泛型参数类型
- java获取泛型参数实际类型
- xml
- 求代码
- c#如何把8位字符串转换成日期格式
- PHP无限级分类排序输出以及分级缩进思路以及解决方案[修正]
- C# 读写ini文件
- Java 泛型参数的获取
- 使用存储过程并返回值与及返回值的获得方法
- Testing the Security of Virtual Data Centers
- Ext.Grid详解
- C++学习第9篇---类和类的封装
- C# 字符转ASCII码,ASCII码转字符
- 压力测试工具集合【ab,webbench,Siege,http_load,Web Application Stress】
- Java并发学习笔记(11)阻塞线程
- webkit 资源