所以我有獲取一個ArrayList(參數)的方法和它應該返回的ArrayList相同類型:Java泛型:未經檢查的泛型列表鑄即使已經與的instanceof檢查
static ArrayList<?> readFromFileToArrayList (Activity activity, String name, ArrayList<?> data) {
try {
String savedData = FileReadWrite.readFromFile(activity, name);
JSONArray jsonArray = new JSONArray(savedData);
if(data.get(0) instanceof String){
ArrayList<String> specificData= (ArrayList<String>) data;
for(int i = 0; i<jsonArray.length();i++){
if(!data.contains(jsonArray.optString(i))){
specificData.add(jsonArray.optString(i));
}
}
return specificData;
}
對於此實現我得到一個「未經檢查的投射警告」。當然,我可以使用「SuppressWarnings」,但我正在尋找一個更好的解決方案,或者是「SuppressedWarnings」這個解決方案已經被認爲是一個乾淨的解決方案嗎?
謝謝你的一切,是的,我已經搜索Stackoverflow的答案。但我真的不知道這是否仍然hacky或乾淨...
因爲我真的不知道那麼多關於Java 8,我有一些後續問題: 1.這隻可能,如果我有數據像字符串,int ..在Arraylist,而不是自建的Datatpyes列表的權利? 2.不知何故「data.stream()」在Android studio上不起作用。 (已包含「import java.util.stream。*;」和配置的gradle)是否有我缺少的東西? 感謝您的回覆。 PS由於我沒有足夠的聲望,無法投票您的答案。請upvote我的問題,以便我可以upvote你的;) – Ayox
@Ayox你沒有標記你的問題[標籤:機器人](我爲你添加了它)。 Android不支持Java 8.我修改了我的答案,使用與Android兼容的Java 7。 – Bohemian
非常感謝你的一切:) 據我所知,他們使用Android N. [鏈接](https://developer.android.com/preview/j8-jack.html) – Ayox