反序列化通用集合的方法:
import java.lang.reflect.Type;import com.google.gson.reflect.TypeToken;...Type listType = new TypeToken<ArrayList<YourClass>>(){}.getType();List<YourClass> yourClassList = new Gson().fromJson(jsonArray, listType);由于评论中的几个人都提到了它,因此这里是对如何使用
TypeToken该类的解释。该构造
new TypeToken<...>() {}.getType()将编译时类型(在<和之间>)捕获到运行时java.lang.reflect.Type对象中。与Class只能表示原始(擦除)类型的Type对象不同,该对象可以表示Java语言中的任何类型,包括通用类型的参数化实例化。
在
TypeToken类本身不具有公共构造,因为你不应该直接构造它。相反,你总是构造一个匿名子类(因此
{},,这是该表达式的必要部分)。由于类型擦除,TypeToken该类只能捕获在编译时完全已知的类型。(也就是说,你不能
new TypeToken<List<T>>() {}.getType()对类型参数进行操作T。)


