Pet*_*son 14 java eclipse android
在这段代码片段中,我在readObject()行上获得了" 类型安全:从Object到ArrayList的未经检查的强制转换 "警告:
// Read the Event List
theEventArrayList = new ArrayList<Event>();
String FILENAME = "EventData.dat";
FileInputStream fis;
try {
fis = openFileInput(FILENAME);
ObjectInputStream ois = new ObjectInputStream(fis);
theEventArrayList = (ArrayList<Event>) ois.readObject();
fis.close();
}
Run Code Online (Sandbox Code Playgroud)
Event是一个简单的类,包括一些字符串,日历,布尔值和整数.的ArrayList是使用在镜像操作,以上述ObjectOutputStream写入.该代码中使用的应用程序是在一个月多次执行的一天,没有失败,但是编译器警告令我烦恼,我不想只是抑制它,如果它可以被"选中"正常.
那么编译器是正确的-谁说您正在阅读的对象确实是ArrayList?我可以轻松地用完全不同的文件替换文件,您会遇到异常。
Object obj = ois.readObject();
if (obj instanceof ArrayList)
// do something
else
// Error
Run Code Online (Sandbox Code Playgroud)
应该管用。是的,由于泛型,您仍然会收到警告,但这就是Java的泛型系统,要摆脱这种情况,就意味着要创建一个新对象并一次添加一个Event -但是,我们必须将Object转换为事件和.. argh,不是更好,只是接受一般警告。
| 归档时间: |
|
| 查看次数: |
26583 次 |
| 最近记录: |