这似乎是一个非常标准的问题,但它是如此简单,我不知道该怎么做。从我在 SO 其他地方读到的内容来看,这是在初始化 ArrayLists 而不指定参数时由泛型引起的。我也知道当我注释掉时警告不会出现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();}
}
}