Android 为什么我会收到警告序列化ArrayList

Android 为什么我会收到警告序列化ArrayList,android,arraylist,serializable,Android,Arraylist,Serializable,我在阅读可序列化对象的ArrayList时收到奇怪的警告。代码如下: public void loadBoard() { FileInputStream fis = null; ObjectInputStream is; try { fis = this.openFileInput(saveFile); is = new ObjectInputStream(fis); // Build up sample vision bo

我在阅读可序列化对象的ArrayList时收到奇怪的警告。代码如下:

public void loadBoard() {
    FileInputStream fis = null;
    ObjectInputStream is;
    try {
        fis = this.openFileInput(saveFile);
        is = new ObjectInputStream(fis);
        // Build up sample vision board
        if (mVisionBoard == null) {
            mVisionBoard = new ArrayList<VisionObject>();
        } else {
            mVisionBoard.clear();
        }
        ArrayList<VisionObject> readObject = (ArrayList<VisionObject>) is.readObject();
        mVisionBoard = readObject;
        is.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        Log.e(TAG, "loadBoard failed: "+e);
    } catch (StreamCorruptedException e) {
        e.printStackTrace();
        Log.e(TAG, "loadBoard failed: "+e);
    } catch (IOException e) {
        e.printStackTrace();
        Log.e(TAG, "loadBoard failed: "+e);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
        Log.e(TAG, "loadBoard failed: "+e);
    }
}
public void loadBoard(){
FileInputStream fis=null;
目的输入流是;
试一试{
fis=this.openFileInput(saveFile);
is=新的ObjectInputStream(fis);
//建立样品视觉板
如果(mVisionBoard==null){
mVisionBoard=newarraylist();
}否则{
mvision.clear();
}
ArrayList readObject=(ArrayList)是.readObject();
mVisionBoard=readObject;
is.close();
}catch(filenotfounde异常){
e、 printStackTrace();
Log.e(标签“加载板故障:”+e);
}捕获(StreamCorruptedException e){
e、 printStackTrace();
Log.e(标签“加载板故障:”+e);
}捕获(IOE异常){
e、 printStackTrace();
Log.e(标签“加载板故障:”+e);
}catch(classnotfounde异常){
e、 printStackTrace();
Log.e(标签“加载板故障:”+e);
}
}
我得到的警告是(在readObject行):

“类型安全:未选中从对象到ArrayList的强制转换”


我读过的几个示例表明,这是读取可序列化对象的ArrayList的正确代码。我编写arraylist的代码没有给我任何警告。我在这里做错什么了吗?

有点晚了,但这会帮助某人

警告的原因是返回了方法
readObject

见:

它实际上返回一个对象

如果您只是错误地读取并反序列化了一个字符串对象,并尝试将其转换到数组列表中,那么您将得到一个运行时执行选项(原因必须很明显)

为了避免可预测的失败,您可以在强制转换之前检查返回对象的类型

这就是你得到警告的原因:

“类型安全:未选中从对象到ArrayList的强制转换”

  public final Object readObject()