我的项目中有以下方法
public void execute(final int apiId, final ResponseHandler handler, final Type type)
并使用TypeToken确定类型,如下所示
final Type serviceErrorType = new TypeToken<>() {
}.getType();
我在这里完成了这个link但完全不了解Type
和TypeToken
任何人都可以分享链接或帮助理解这两个概念吗?
答案 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。