0
我有一個函數需要創建一個類型的對象列表作爲泛型傳入。Java參數化泛型類型列表創建不同類型的對象
public static <T> List<T> readJsonFile(final String filePath) {
List<T> objectsFromFile=null;
File file = new File(System.getProperty("catalina.base") + filePath);
Gson gson = new Gson();
try (FileInputStream JSON = new FileInputStream(file)) {
BufferedReader br = new BufferedReader(new InputStreamReader(JSON));
objectsFromFile = gson.fromJson(br, new TypeToken<List<T>>() {
}.getType());
} catch (Exception e) {
e.printStackTrace();
}
return objectsFromFile;
}
當我看物體的在結果列表中的類型它們是類型T的不(T將予定義的不同類別的),但類型com.google.gson.internal.LinkedTreeMap的。
有誰知道爲什麼?我怎麼能這樣做,所以返回的列表是T型?
優秀的答案謝謝。我是新的與泛型工作,所以我不知道擦除是什麼,但我會檢查出來。 – dragosb
它基本上意味着你不能在運行時訪問'T',因爲泛型實現的方式。請參閱https://docs.oracle.com/javase/tutorial/java/generics/erasure.html –