将对象投射到列表会导致未经检查的投射警告

mrQWERTY

我想投ObjectList<IAnalysisData>该对象已从数据库中读取。但是,我收到一个烦人的警告,说演员表未经检查。

private List<IAnalysisData> deserialize(byte[] bytes) throws IOException, ClassNotFoundException
{
    List<IAnalysisData> analysisDataList = null;
    ByteArrayInputStream in = new ByteArrayInputStream(bytes);
    ObjectInputStream oos = new ObjectInputStream(in);
    Object o = oos.readObject();

    analysisDataList = (List<IAnalysisData>) o; //warning here
    return analysisDataList;
}

投射对象的正确方法是什么?

编辑:我忘了提到那IAnalysisData是一个接口。该实现称为AnalysisData

安德鲁·艾特肯

我知道要修复类似问题的唯一方法是添加

@SuppressWarnings("unchecked")

即使您绝对“知道”这是安全的,也无法证明自己在做的事确实是安全的。

所以看起来像

@SuppressWarnings("unchecked")
private List<IAnalysisData> deserialize(byte[] bytes) throws IOException, ClassNotFoundException
{
    List<IAnalysisData> analysisDataList = null;
    ByteArrayInputStream in = new ByteArrayInputStream(bytes);
    ObjectInputStream oos = new ObjectInputStream(in);
    Object o = oos.readObject();

    analysisDataList = (List<IAnalysisData>) o; //warning here
    return analysisDataList;
}

在那之后,您将不会在该方法中收到任何未经检查的警告。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章