【发布时间】:2016-03-23 17:02:34
【问题描述】:
我有一个实例变量HashMap<String, Object> sessions;
我正在尝试从输入流中读取 HashMap<String, Object> 的已保存实例:
ObjectInputStream is = new ObjectInputStream(fis);
sessions = (HashMap<String, Object>) is.readObject();
但是在第二行我收到以下警告:
Unchecked cast: 'java.lang.Object' to 'java.util.HashMap<java.lang.String,java.lang.Object>'
它为我提供了泛型类,它完全没有做任何事情。我尝试将实例变量更改为原始的通用HashMap,并相应地转换为原始HashMap,但是每当我尝试将任何内容放入哈希映射时,我都会收到未经检查的警告,例如:
sessions.put("all", new ArrayList());
产生警告Unchecked call to 'put(K, V)' as a member of raw type 'java.util.HashMap'。
我知道这些只是警告,不会在运行时造成问题,但为了正确起见,我怎样才能摆脱所有警告?
我使用的是 Android Studio 2.0b7。
【问题讨论】:
-
您可以从
ObjectInputStream中读取任何内容——如果您尝试将读取的对象转换为Object以外的任何内容,您将始终得到未经检查的转换。摆脱第一个警告的唯一方法是添加@SuppressWarnings。 -
并且不要使用原始类型方法。
-
@AndyTurner 是的,我想尽可能避免生吃,这就是为什么我试图摆脱警告并确保一切都“强大”。正如您和米哈伊尔建议的那样,添加
@SuppressWarnings解决了这个问题。
标签: java generics android-studio casting