我想将Object
强制转换为List<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;
}
在那之后,您将不会在该方法中收到任何未经检查的警告。