異常資訊
java.lang.ClassCastException: com.google.gson.internal.StringMap cannot cast to…
異常描述
- 期望使用一個方法将JsonArray字元串轉換為對象List,方法運作結束後,結果List中的對象不能識别為傳入的T對象類型,而是識别為一個Map導緻後續出錯。
- 方法如下
public static <T> List<T> getListFromJSON(String str, Class<T> type) {
Type listType = new TypeToken<List<T>>(){}.getType();
List<T> list = new Gson().fromJson(str, listType);
return list;
}
- 調用方式
異常原因
- 作為方法傳入參數,Java編譯過程會将泛型對象類型擦除。
解決方案
方案1
- 直接copy方法内代碼直接使用,而不通過方法傳入
方案2
- 方法如下
public static <T> List<T> stringToArray(String s, Class<T[]> clazz) {
T[] arr = new Gson().fromJson(s, clazz);
return Arrays.asList(arr);
}
- 調用方式