Java [未选中]未经检查的案例警告

con*_*kus 3 java uncaught-exception

好吧,我一直在环顾四周,做了很多谷歌搜索,但我仍然找不到避免这种警告的方法.

Integer result = chooser.showOpenDialog(null);
if (result.equals(0))
{
    String tempHolder = chooser.getSelectedFile().getPath();
    filenameLoad = new File(tempHolder);
    filenameSave = filenameLoad;
    FileInputStream fis = null;
    ObjectInputStream in = null;
    try
    {
        fis = new FileInputStream(filenameLoad);
        in = new ObjectInputStream(fis);;
    }
    catch(IOException ex)
    {
        ex.printStackTrace();
    }

    try
    {
        loadFile = (ArrayList<Dot>)in.readObject();
    }
    catch(IOException ex)
    {
        System.out.println("Cast fail");
    }
    catch(ClassNotFoundException ex)
    {
        System.out.println("Cast fail");
    }
    catch (ClassCastException ex)
    {
        System.out.println("Cast fail");
    }

    try
    {
        in.close();
    }
    catch(Exception ex)
    {
        System.out.println("failed to close in");
    }
    save.setEnabled(true);
      gpanel.setDotList(loadFile);
  }
Run Code Online (Sandbox Code Playgroud)

它在行loadFile =(ArrayList)in.readObject()中给出了警告; 我已经添加了捕获量,所以我不确定为什么它仍然说它没有捕获.有帮助吗?谢谢?

Ing*_*ngo 10

它不是"未捕获",而是"未经检查".JVM无法在运行时告知,即在完成转换时,ArrayList是否真的包含Dot元素.

从原始类型转换为泛型类型时,会发生此警告.如果您确定演员阵容没问题,则可以使用注释来抑制警告

@SuppressWarnings("unchecked")
Run Code Online (Sandbox Code Playgroud)

为此,最好将铸件封装在一个小而单独的方法中.