有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

直接在@SuppressWarnings之后出现java Eclipse错误(“未选中”)

我似乎在抑制从文件中反序列化包含MyObject类型的ArrayList时得到的警告时遇到了某种问题。我收到的错误消息来自于线路

objects = (ArrayList<MyObject>) ois.readObject();

内容如下:

Type safety: Unchecked cast from Object to ArrayList<MyObject>

在我将@SuppressWarnings(“未选中”)应用于特定警告之后,它表示我的对象无法解析为类型

ArrayList<MyObject> objects;
try {
    FileInputStream fis = new FileInputStream(new File("myfile.txt"));
    ObjectInputStream ois = new ObjectInputStream(fis);
    @SuppressWarnings("unchecked")
    objects = (ArrayList<MyObject>) ois.readObject(); //Getting 'objects cannot be resolved to a type'
    fis.close();
}

catch (Exception e) {
    objects = new ArrayList<MyObject>();
}

这很奇怪,因为如果我对整个方法应用@SuppressWarnings(“unchecked”),错误就会消失。此外,它在多台机器上发生,而不仅仅是在一个设置上

当我仅抑制错误的一个实例时,是否有人了解导致此错误出现的原因


共 (1) 个答案

  1. # 1 楼答案

    @SupressWarnings("unchecked")只能应用于对象的去极化,这将起作用:

    @SuppressWarnings("unchecked")
    ArrayList<String> objects = (ArrayList<String>) ois.readObject();
    

    。。。但可能解决不了你的问题。原因可以在JDK源代码中找到。@SupressWarnings批注上的@Target批注定义了允许的位置:

    @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})