jjzjj

TypeToken

全部标签

java - 理解 Guava 的 TypeToken.isAssignableFrom 方法

我正在使用GuavaTypeToken类来测试任意类型的实例是否可以分配给其他类型的对象。在下面的代码片段中,我正在测试类型是否声明为List可从List分配,反之亦然:TypeTokenrawListType=newTypeToken(){};TypeTokenparameterizedListType=newTypeToken>(){};System.out.println(rawListType.isAssignableFrom(parameterizedListType));//trueSystem.out.println(parameterizedListType.isAss

java - TypeToken 嵌套泛型类型的意外泛型行为

我有TypeToken类用于表示一些通用类型,如下所示:TypeToken>listOfStrings=newTypeToken>{}这很好用,TypeToken只是classTypeToken{}使用简单的方法来获取该类型。现在我想为List这样的常见类型创建简单的方法更多动态用法:TypeToken>numbers=list(extendsType(Number.class))使用:publicstaticTypeTokenextendsType(Classtype){returnnull;}publicstaticTypeToken>list(TypeTokentype){ret

java - Guava TypeToken 和泛型类

我正在使用GuavaTypeToken在我的项目中上课,但我得到了意想不到的结果。我有MyGenericClass:publicclassMyGenericClassimplementsMyInterface{privateTypeTokenrecordType;publicMyGenericClass(Stringname){this.recordType=newTypeToken(getClass()){};//...}//...@SuppressWarnings("unchecked")protectedClassgetRecordType(){return(Class)reco

java - 使用 gson 反序列化时将 TypeToken 转换为 Type 时出错

我有一个类使用此函数反序列化泛型的ArrayList,正如该线程的第一个答案中所述:JavaabstractclassfunctiongenericTypepublicArrayListarrayType(Stringdata){returng.fromJson(data,TypeToken.get(newArrayList().getClass()));}Eclipse要求我强制转换TypeToken结果(因为来自Json的函数需要类型,而不是TypeToken)publicArrayListarrayType(Stringdata){returng.fromJson(data,(T

java - 函数调用后的大括号是什么?

在下面的代码中,Type类型是什么意思,大括号是干什么用的?Typetype=newTypeToken>(){}.getType();Listlist=converter.fromJson(jsonStringArray,type); 最佳答案 那不是在函数调用之后,而是在构造函数调用之后。线路Typetype=newTypeToken>(){}.getType();正在创建TypeToken的匿名子类的实例,然后调用其getType()方法。你可以在两行中做同样的事情:TypeToken>typeToken=newTypeToke

java - 为泛型父类(super class)型的类型参数创建 TypeToken

我正在实现一个GsonTypeAdapter对于两个依赖的通用模型。interfaceModelA{}interfaceModelBextendsModelA>{}为此,我需要获取TypeToken和TypeAdapter.通过做Typetype=((ParameterizedType)type).getActualTypeArguments()[0];TypeTokentoken=TypeToken.get(type);TypeAdapteradapter=gson.getAdapter(token);我得到了任何给定类型的两个模型的类型标记AnyType和相关的适配器。这就是我需要

java - 什么是类型和类型 token ?

我的项目中有如下方法publicvoidexecute(finalintapiId,finalResponseHandlerhandler,finalTypetype)并且类型是使用TypeToken确定的,如下所示finalTypeserviceErrorType=newTypeToken(){}.getType();我经历了这个linkhere但不能完全理解Type和TypeToken谁能分享一个链接或帮助理解这两个概念? 最佳答案 来自link你提供了:Forcesclientstocreateasubclassofthisc

java - 在 GSON 中使用泛型

我正在使用GSON将JSON解码为T类型的对象,例如publicTdecode(Stringjson){Gsongson=newGson();returngson.fromJson(json,newTypeToken(){}.getType());}然而这会返回一个异常-java.lang.AssertionError:意外类型。预期之一:java.lang.reflect.ParameterizedType,java.lang.reflect.GenericArrayType,但得到:sun.reflect.generics.reflectiveObjects.TypeVariabl

java - 在 GSON 中使用泛型

我正在使用GSON将JSON解码为T类型的对象,例如publicTdecode(Stringjson){Gsongson=newGson();returngson.fromJson(json,newTypeToken(){}.getType());}然而这会返回一个异常-java.lang.AssertionError:意外类型。预期之一:java.lang.reflect.ParameterizedType,java.lang.reflect.GenericArrayType,但得到:sun.reflect.generics.reflectiveObjects.TypeVariabl

java - Gson TypeToken 是如何工作的?

我知道在Java中与C#泛型相反,例如,C#泛型是编译时特性,并且通过类型删除被删除。那么,Gson的TypeToken究竟是如何工作的呢?它如何获取对象的泛型类型? 最佳答案 From§4.6oftheJLS(强调我的):Typeerasureisamappingfromtypes(possiblyincludingparameterizedtypesandtypevariables)totypes(thatareneverparameterizedtypesortypevariables).Wewrite|T|fortheera