我可以通过 Companion 对象传递对象吗?

Can I pass objects through Companion object?

我对 Android 的 kotlin 中的伴生对象有疑问:我可以通过伴生对象传递对象吗?

我已经尝试过这个并且很有效,但我不知道这是一个好方法还是应该避免?

编辑: 感谢您的回答,我怀疑这是一种不好的做法,但我想确定一下!

必须避免,与Java静态一样。 不会在进程重建中存活并引入全局可变状态。

如前所述,必须避免通过 Companion 对象传递对象,因为它的行为方式与 Java 静态相同。

最好的选择是通过包传递您的对象。如果你不喜欢自己实现 Parcelable,你可以尝试 @Parcelize which is available in kotlin or some libraries, such as Parceler.

否,将伴随对象用作对象引用工具是不好的做法。请将项目添加到捆绑包中。如果您使用带有片段导航的捆绑包,我会推荐使用新的 Jetpack Navigation 组件。使用 safeArgs,导航和传递对象真的很容易。