传递:
val intent = Intent(this, ImageCategoryActivity::class.java)
intent.putExtra("Images", netDiskData!!.imageMap)
startActivity(intent)
接收:
val imageData =
intent.getSerializableExtra("Images") as HashMap<String, ArrayList<ImageBean>>
ImageBean 是一个实体类,已经 Serializable 序列化
但是 AndroidStudio 会提示 Unchecked cast
Unchecked cast: Serializable! to kotlin.collections.HashMap<String, ArrayList<ImageBean> /* = ArrayList<ImageBean> */> /* = java.util.HashMap<String, ArrayList<ImageBean>> */
代码洁癖看着实在是烦人,搜了一圈,都是让 @SuppressWarnings("unchecked") 来解决编译器警告,但是并没有实际解决问题
你们有人遇到这种情况吗?是怎么解决的呢?谢谢谢谢
1
looplj 2020 年 12 月 25 日
这不就是一个编译器警告吗?
你把一个 Object 强制转为 一个 Map,不得告警吗。 还想怎么解决。 |
2
mxalbert1996 2020 年 12 月 25 日 via Android
这种编译器不确定但你可以确定没问题的情况正是 Suppress 的用途(你应该用 Kotlin 的 @Suppress ),Kotlin 的标准库也是这么做的。
https://github.com/JetBrains/kotlin/blob/532124d9a17e6939046bd0ff9ef5699d21d2ed2d/libraries/stdlib/src/kotlin/util/Lazy.kt#L84 |
3
lixyz OP @mxalbert1996 明白了,多谢多谢,仔细想想,确实像你说的一样,要不然人家也不会平白无故搞个 Suppress 出来。。。是我钻牛角尖了
|
4
fromzero 2020 年 12 月 25 日 via Android
是我的话我不会把 map 传到 intent 。最好把数据拍平,存到一个对象里。如果是拍不平非要用 map 就用 eventbus 之类的发送粘性事件来接收
|