【发布时间】:2013-10-19 06:12:59
【问题描述】:
这似乎是一个非常标准的问题,但它太简单了,我不知道该怎么办。从我在 SO 其他地方读到的内容来看,这是由泛型在初始化 ArrayList 时未指定参数引起的。我也知道当我注释掉ArrayList<Integer> p = (ArrayList<Integer>)is.readObject(); 时不会出现警告,所以我很确定编译器存在泛型安全问题,因为我试图将Object 转换为ArrayList<Integer>。如何保存ArrayList 而不会导致这种情况?
代码如下:
import java.util.*;
import java.io.*;
public class FileTest
{
public static void main(String[] args)
{
String fileName = "fred.txt";
ArrayList<Integer> a = new ArrayList<Integer>();
a.add(2);
a.add(3);
a.add(4);
try
{
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(fileName));
os.writeObject(a);
os.close();
}
catch(FileNotFoundException e){e.printStackTrace();}
catch(IOException e){e.printStackTrace();}
try
{
ObjectInputStream is = new ObjectInputStream(new FileInputStream(fileName));
ArrayList<Integer> p = (ArrayList<Integer>)is.readObject();
//for(int i : p) System.out.println(i);
}
catch(FileNotFoundException e){e.printStackTrace();}
catch(IOException e){e.printStackTrace();}
catch(ClassNotFoundException e){e.printStackTrace();}
}
}
【问题讨论】:
-
好了,哈哈。谢谢你。
标签: java generics arraylist objectoutputstream