直接跟随@SuppressWarnings的Eclipse错误(“未选中”)

时间:2011-08-25 03:19:50

标签: java android eclipse generics

我似乎遇到了某种问题,这种问题会抑制我从文件中反序列化包含MyObject类型的ArrayList的警告。我得到的错误信息来自

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

它的内容如下:

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

将@SuppressWarnings(“unchecked”)应用于特定警告后,它表示我的对象对象无法解析为某种类型。

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”)应用于整个方法,则错误就会消失。此外,它 IS 发生在多台机器上,而不仅仅是在一次设置上。

当我只抑制错误的一个实例时,有没有人知道发生了什么导致出现此错误?

1 个答案:

答案 0 :(得分:6)

@SupressWarnings("unchecked")只能应用于对象的声明,这样就可以了:

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

...但可能无法解决您的问题。其原因可以在JDK源代码中找到。 @Target注释上的@SupressWarnings注释定义了允许的位置:

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