什么是Type& TypeToken?

时间:2017-03-30 12:21:11

标签: java android json gson typetoken

我的项目中有以下方法

 public void execute(final int apiId, final ResponseHandler handler, final Type type)

并使用TypeToken确定类型,如下所示

final Type serviceErrorType = new TypeToken<>() {
    }.getType();

我在这里完成了这个link但完全不了解TypeTypeToken

任何人都可以分享链接或帮助理解这两个概念吗?

1 个答案:

答案 0 :(得分:18)

来自您提供的link

  

强制客户端创建此类的子类,即使在运行时也可以检索类型信息。

让我们举个例子。

假设您要使用Gson库将JSON解析为Java类。 现在,你必须特别告诉Gson:

  

我希望将此JSON转换为用户对象的列表

你怎么告诉Gson?如果只是User,您可以告诉User.class。但是不可能说List<User>.class

new Gson().fromJson(json, new TypeToken<List<User>>(){}.getType())

但是现在你可以准确地指定Gson应该将它转换为List of Users

应引用文档中的解释:

  

表示通用类型T。 Java还没有提供表示泛型类型的方法,所以这个类就可以了。

有关该主题的详细信息,请查看this blog post