Kotlin对象比较注意的点是什么(kotlin,开发技术)

时间:2024-05-10 05:54:49 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Kotlin%E5%AF%B9%E8%B1%A1%E6%AF%94%E8%BE%83%E6%B3%A8%E6%84%8F%E7%9A%84%E7%82%B9%E6%98%AF%E4%BB%80%E4%B9%88

现有一个StateFlow及其监听

更新ArrayList并尝试emit

实际上,collect并不会被调用

MutableStateFlow真正的实现者是StateFlowImpl, emit方法代码如下:

查看value的set方法:

其中"if (oldState == newState) return true"因emit前后是同一个对象,导致条件为true,那么,如果emit前后不是同一个对象,即可解决这个问题?

emit时尝试以下代码:

实际上,上述代码仍旧不能解决问题,因为kotlin.Pair默认重写了equals方法,查看kotlin.Pair decompiled的Java文件

其中Intrinsics.areEqual代码如下:

故即使pair对象本身不一样,但由于kotlin默认重写了equals方法,而pair.first与pair.second是一样的,从而条件"if (oldState == newState) return true"成立

由于StateFlow源码无法修改且是特定场景需求,故无法将判断条件改为kotlin的"===";故使用android.util.Pair或者自定义java Pair class即可

本文:Kotlin对象比较注意的点是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Beego中ORM操作各类数据库连接的方式是什么下一篇:

13 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18