我正在进行"未经检查或不安全的操作"此方法出错:
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;
}
在这种情况下,不是映射最抽象的吗?我怎么解决这个问题?
方法setSomeList(注意!它放在另一个类中!如果有帮助的话):
public void setSomeList(Map<String,MyOtherClass> l){
for(Map.Entry<String,MyOtherClass> entrada : l.entrySet())
someList.put(entrada.getKey(),entrada.getValue().clone());
}
答案 0 :(得分:1)
您应该在投射前检查对象类型。
Object theObject = obj.readObject();
if (theObject instanceof Map)
{
Map theMap = (Map) theObject;
objSetSomeList(theMap);
}
答案 1 :(得分:0)
这只是一个警告,您可以简单地忽略它,因为它不会阻止您的应用程序工作,除非它不是正确的类型,如果您想删除它只需在方法定义级别添加@SuppressWarnings("unchecked")
,如下所示:
@SuppressWarnings("unchecked")
public static MyClass initApp(){