这似乎是一个非常标准的问题,但它非常简单,我不知道该怎么做。从我在其他地方读过的内容可以看出,这是由ArrayLists在未指定参数的情况下进行初始化时由泛型引起的。我也知道,当我注释掉ArrayList<Integer> p = (ArrayList<Integer>)is.readObject();
时,警告没有出现,所以我敢肯定编译器存在一个泛型安全问题,我试图将Object
转换为ArrayList<Integer>
。我怎样才能保存ArrayList
而不造成这种情况?保存ArrayLists时由泛型引起的Java编译器警告
下面的代码:
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();}
}
}
那么你去,哈哈。感谢那。 –