0
我試圖下面的方法轉換:泛型類型陣列 - 不能從一個類型變量選擇
public List<AliasIp> getStoreAsList(String storeName) {
return new java.util.ArrayList<>(Arrays.asList(mGson.fromJson(getStoreRaw(storeName), AliasIp[].class)));
}
類似於一個通用版本:
public <T> List<T> getStoreAsList(String storeName) {
return new java.util.ArrayList<T>(Arrays.asList(mGson.fromJson(getStoreRaw(storeName), T[].class)));
}
但我運行到與煩惱T []類不與錯誤編譯:
「不能從一個類型變量選擇」
語法應該如何避免該錯誤?
你面對的Java的 「類型擦除」。看看http://stackoverflow.com/questions/529085/how-to-create-a-generic-array-in-java,它不是100%等於你的問題,但在這個問題的答案你可以閱讀爲什麼編譯器無法理解T []。class是什麼。 – AGV
當Java處理你的代碼時,它總是刪除具有確定類(類型擦除)的'T'表達式。 Java永遠不會離開'T'。所以,當遇到'T []'時,它不知道,這裏應該是什麼類。我建議你遵循@Kolesnikovich Dmitry的解決方案,並將類作爲方法參數傳遞。 –
順便說一下'Arrays.asList'已經返回一個列表。除非方法保證返回不能從其當前簽名中識別的特定類型'ArrayList',否則不需要將其複製到'ArrayList'中。 – Holger