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(){
我在使用此方法时遇到 "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(){