什么是Type & TypeToken?

2022-09-01 08:42:22

我的项目中有以下方法

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

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

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

我在这里浏览了这个链接,但无法完全理解和TypeTypeToken

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


答案 1

从您提供的链接

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

让我们举个例子。

假设你想用Gson库将JSON解析为Java类。现在,你必须具体告诉Gson,那就是:

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

你会怎么告诉Gson?如果只是,你就可以看出.但不可能说UserUser.classList<User>.class

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

但是现在您可以精确地指定Gson应将其转换为.List of Users

应该引用文档的解释:

表示泛型类型 。Java 还没有提供一种表示泛型类型的方法,所以这个类提供了。T

请查看此博客文章,了解有关该主题的更多详细信息。


答案 2