【发布时间】:2016-05-14 19:40:55
【问题描述】:
我在此方法中收到“未经检查或不安全的操作”错误:
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());
}
【问题讨论】:
-
现在你只是假设从流中读取的对象是一个 Map
。您应该在转换之前仔细检查读取的对象的类。 -
@CConard96 如何在 ObjectInputStream“环境”中做到这一点?
-
idk 你在想什么,但你为什么要使用 oin.readObject(),你能告诉我
-
向我们展示 setSomeList 方法
-
@holidayCoder 因为如果我没有不兼容的类型错误
标签: java compiler-warnings objectinputstream