public Object fromJson(String json, Class classOfT) throws JsonSyntaxException {
Object object = fromJson(json, (Type) classOfT); // 關鍵行
return Primitives.wrap(classOfT).cast(object);
}
public Object fromJson(String json, Type typeOfT) throws JsonSyntaxException { ... }
`Class
java.lang.reflect.Type (接口)
↑ 實現
java.lang.Class (類)
↑ 繼承
java.lang.Object
Gson 內部解析邏輯統一處理 `Type` 對象,以支持完整泛型類型信息:
當調用 `fromJson(json, MyClass.class)` 時,`classOfT` 是 `Class
// 錯誤:類型擦除,無法正確反序列化泛型集合
List list = gson.fromJson(json, List.class); // 得到 List
// 正確:使用 TypeToken 保留完整泛型信息
Type listType = new TypeToken>() {}.getType();
List list = gson.fromJson(json, listType); // 正確得到 List
`TypeToken` 利用**匿名內部類繼承捕獲泛型簽名**,繞過類型擦除。