java - 将对象转换到列表会导致未检查的转换警告

标签 java casting

我要投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是一个接口(interface)。该实现称为 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;
}

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

关于java - 将对象转换到列表会导致未检查的转换警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31540556/

相关文章:

c - 没有转换的整数指针

c++ - 从 const void * 转换为 float 数组

java - Android getContentResolver() 未定义用于获取 AndroidID

java - 对象引用有多大?

java - 非托管线程 Spring Quartz Websphere Hibernate

java - 在java中将浮点位解释为long?

c++ - 发送新类型作为参数

java - 下载 CSV 格式的完整数据库

java - 添加 fragment 时应用程序崩溃

c++ - 什么是 C++ 中的 instanceof 的等价物?