未选中的强制转换:必需的ArrayList <type> found对象</type>

时间:2014-12-05 15:57:12

标签: java arraylist deserialization

我已将对象添加到ArrayList

ArrayList<Pojazd> parking=new ArrayList<>();

并将整个列表作为对象写入文件。

void exportArrayListy() throws IOException{
    FileOutputStream fo=new FileOutputStream("arraylista.ser");
    ObjectOutputStream oo=new ObjectOutputStream(fo);
    oo.writeObject(parking);
    fo.close();
    parking=null;
}

问题在于尝试将它们作为一个整体阅读:

void importArrayListy() throws IOException, ClassNotFoundException{
    FileInputStream fi=new FileInputStream("arraylista.ser");
    ObjectInputStream oi=new ObjectInputStream(fi);
    parking=(ArrayList<Pojazd>)oi.readObject();
    oi.close();
}

(一切都在尝试捕获,所以没有什么可担心的)。我收到以下警告:

  

警告:[未选中]未经检查的强制转换           停车=(ArrayList的)oi.readObject();     required:ArrayList     发现:对象

1 个答案:

答案 0 :(得分:4)

是的,java不幸地做到了。这是许多奇怪的功能之一&#34;在其类型系统中。 .readObject最初是在泛型的概念存在之前创建的,因此它不是参数化的,并且被声明为返回Object。 如果警告困扰您,您可以通过在函数声明之前添加注释@SuppressWarnings("unchecked")来禁止它。

顺便说一下,重新:&#34;一切都在try / catch&#34;中,你可能想要添加一个finally子句并在那里移动oi,以避免将其打开.readObject

中的例外情况