Parcel.readHashMap使用什么类加载器?

hdo*_*ort 9 java generics android classloader parcelable

我正在使用以下代码HashMap<String, String从包中读取类型> 的地图:

in.readHashMap(HashMap.class.getClassLoader());
Run Code Online (Sandbox Code Playgroud)

这似乎工作得很好,但我得到一个警告:

Type safety: The expression of type HashMap needs unchecked conversion to conform to Map<String,String>
Run Code Online (Sandbox Code Playgroud)

有没有"正确"的方法,使用不同的类加载器?或者我应该一起去@SuppressWarnings("unchecked")?

Dav*_*ser 7

Android开发者文档Parcel.readHashMap()说:

readBundle(ClassLoader)改用(其数据必须使用writeBundle(Bundle).

所以也许你应该使用readBundle()writeBundle()不是.

  • 谢谢你的提示!虽然严格来说不是上述问题的答案,但它解决了我的问题.这就是我所做的:当写入包裹时:`Bundle bundle = new Bundle();``bundle.putSerializable("map",myMap);``dest.writeBundle(bundle);`当从包裹中再次阅读时: `Bundle bundle = in.readBundle();``@SuppressWarnings("unchecked")``HashMap <String,String> myMap =(HashMap <String,`String>)bundle.getSerializable("map");`this. myMap = myMap;` (14认同)