所以我有获取一个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