ObjectInputStream 中未经检查或不安全的操作

Unchecked or unsafe operations at ObjectInputStream

我在使用此方法时遇到 "Unchecked or unsafe operations" 错误:

public static MyClass initApp(){
        MyClass obj = new MyClass(); 
        try{
            ObjectInputStream oin = 
                new ObjectInputStream(new FileInputStream("file.dat"));

            obj.setSomeList ( (Map<String,MyOtherClass>) oin.readObject()); //error line

        }catch(IOException e)
            { System.out.println(e.getMessage()); }
         catch(ClassNotFoundException e)
            { System.out.println(e.getMessage()); }

        return obj; 
    }

这种情况下Map不是越抽象越好吗?我该如何解决这个问题?

方法 setSomeList(注意!它放在另一个 class 中!如果有帮助的话):

public void setSomeList(Map<String,MyOtherClass> l){
        for(Map.Entry<String,MyOtherClass> entrada : l.entrySet())
            someList.put(entrada.getKey(),entrada.getValue().clone());
    }

你应该在投射前检查对象类型。

Object theObject = obj.readObject();
if (theObject instanceof Map)
{
    Map theMap = (Map) theObject;
    objSetSomeList(theMap);
}

这只是一个警告,您可以简单地忽略它,因为它不会阻止您的应用程序工作,除非它不是正确的类型,如果您想删除它,只需在方法中添加 @SuppressWarnings("unchecked")定义级别,如下:

@SuppressWarnings("unchecked")
public static MyClass initApp(){