Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java[未选中]未选中案例警告_Java_Uncaught Exception - Fatal编程技术网

Java[未选中]未选中案例警告

Java[未选中]未选中案例警告,java,uncaught-exception,Java,Uncaught Exception,好吧,我一直在四处寻找,做了很多谷歌搜索,但我仍然找不到一个方法来避免这个警告 Integer result = chooser.showOpenDialog(null); if (result.equals(0)) { String tempHolder = chooser.getSelectedFile().getPath(); filenameLoad = new File(tempHolder); filenameSave = filenameLoad;

好吧,我一直在四处寻找,做了很多谷歌搜索,但我仍然找不到一个方法来避免这个警告

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);
  }
Integer result=chooser.showOpenDialog(null);
if(结果等于(0))
{
字符串tempHolder=chooser.getSelectedFile().getPath();
filenameLoad=新文件(临时持有者);
filenameSave=filenameLoad;
FileInputStream fis=null;
ObjectInputStream in=null;
尝试
{
fis=新的FileInputStream(filenameLoad);
in=新对象输入流(fis);;
}
捕获(IOEX异常)
{
例如printStackTrace();
}
尝试
{
.readObject()中的loadFile=(ArrayList);
}
捕获(IOEX异常)
{
系统输出打印项次(“转换失败”);
}
捕获(ClassNotFoundException ex)
{
系统输出打印项次(“转换失败”);
}
捕获(ClassCastException例外)
{
系统输出打印项次(“转换失败”);
}
尝试
{
in.close();
}
捕获(例外情况除外)
{
System.out.println(“关闭失败”);
}
save.setEnabled(true);
gpanel.setDotList(加载文件);
}
它在.readObject()中的loadFile=(ArrayList)行给出警告;我已经加入了捕猎,所以我不知道为什么它仍然说它没有捕猎。有什么帮助吗?谢谢?

它不是“未锁定”,而是“未锁定”。JVM无法在运行时(即转换完成时)判断ArrayList是否真的包含点元素

无论何时从原始类型强制转换为泛型类型,都会出现此警告。如果确定强制转换正常,则可以使用注释抑制警告

@SuppressWarnings("unchecked")

为此,最好将强制转换封装在一个小的、单独的方法中。

这意味着编译器无法检查读入的对象是否与强制转换到的类型匹配。因此,未经检查的警告


顺便说一句:您可能希望改进错误处理,使其更简单、更清晰

您看到的是一个编译器警告,您试图将一个对象转换为
数组列表
,而没有首先检查该对象是否确实包含一个点列表,而不是一个Foo列表。

它没有说
uncatched
(正确拼写为
uncaught
),而是说
unchecked
。强制转换为泛型类型时无法避免此警告,只能抑制它。或者你也可以解决这个问题:

@SuppressWarnings("unchecked")
public static <T> T castToAnything(Object obj) {
  return (T) obj;
}

您没有检查

in.readObject();
这真是一个

ArrayList<Dot>
ArrayList
使用

ArrayList点列表=null;
Object obj=in.readObject();
if(数组列表的obj实例)
{
dotList=(ArrayList)obj;
}

loadFile的声明是什么?警告的文本是什么?嘿,谢谢,我在程序中使用了这个,不再给我那个警告了,非常感谢!是的,我四天前才知道异常,所以当我收到那个警告时,我想这意味着我需要捕捉异常,所以我就用所有的东西来点击它。@marblecatdog,现在听起来不错。您可能会发现,在所有代码中没有少量捕获更好。改用ArrayList表单,因为更多的泛型类型信息将在运行时被删除。
ArrayList<Dot>
ArrayList<Dot> dotList = null;
Object obj = in.readObject();
if (obj instanceof ArrayList<Dot>)
{
dotList = (ArrayList<Dot>) obj;
}