我似乎遇到了某种问题,这种问题会抑制我从文件中反序列化包含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 发生在多台机器上,而不仅仅是在一次设置上。
当我只抑制错误的一个实例时,有没有人知道发生了什么导致出现此错误?
答案 0 :(得分:6)
@SupressWarnings("unchecked")
只能应用于对象的声明,这样就可以了:
@SuppressWarnings("unchecked")
ArrayList<String> objects = (ArrayList<String>) ois.readObject();
...但可能无法解决您的问题。其原因可以在JDK源代码中找到。 @Target
注释上的@SupressWarnings
注释定义了允许的位置:
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})