小编Bre*_*nne的帖子

如何将ArrayList <String>添加到JSON数组 - 记住类型安全

Eclipse显示了一个类型安全警告,我尝试了几乎所有东西来消除它(当然压制它将是一个选项)但不幸的是我没有任何成功.
你知道我如何更改我的代码,以便不再有类型安全警告.或者是@SuppressWarnings("unchecked")唯一的方法?

ArrayList<String> arrayList= (ArrayList<String>) Classname.getArrayList();      
JSONArray obj = new JSONArray();
obj.addAll(arrayList); 
Run Code Online (Sandbox Code Playgroud)

在显示类型安全警告的最后一行:

类型安全:方法addAll(Collection)属于原始类型ArrayList.应该参数化对泛型类型ArrayList的引用

JSONArray来自org.json.simple.JSONArray.你会推荐另一个套餐吗?

java json arraylist type-safety

10
推荐指数
1
解决办法
2万
查看次数

当一个未来任务预期结果时继续

我有3个FutureTask<T>物体.我希望它们是异步处理的.但是,只要其中一个FutureTasks get()方法没有返回,null我想继续,即我的方法(包装器)返回,并且不等到处理其他两个FutureTasks.我想到了类似的东西:

private File wrapper(final File file) {
    ExecutorService executors = Executors.newCachedThreadPool();
    File returnFile;
    FutureTask<File> normal= ...
    FutureTask<File> medium=...     
    FutureTask<File> huge=...

    executors.execute(normal);
    executors.execute(medium);
    executors.execute(huge);
    try {
        if((returnFile=normal.get()) != null || 
           (returnFile=medium.get()) != null ||  
           (returnFile=huge.get()) != null)

            return returnFile;

    } catch(ExecutionException | InterruptedException e) { }
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何以正确的方式捕获异常(由get()抛出),因为我假设它们将被抛出,因为我只是返回而不等待其他两个任务完成.此外,我怀疑代码是否会像预期的那样工作.我觉得我接近解决方案但却遗漏了一些东西.

java asynchronous executorservice futuretask

6
推荐指数
1
解决办法
197
查看次数