深度复制Kotlin中的Realm对象



我想复制领域对象,然后更改第二个,而不重新分配所有键。我该怎么做?RealmObject没有.copy().clone()方法。

// Money is not data class and has ∞ fields which will be boring to re-assign
val money = Money()
money.amount = 1000
...
val anotherMoney = money
anotherMoney.amount = 500
println(money.amount) // prints 500

你能提供更多上下文和适当的信息吗?因为我在你的代码语句中没有看到和数组的。非常感谢。

编辑

因为Money不是一个数据类,所以您没有自动生成的copy((函数,这给您留下了两个选项:

  1. 在Money类中创建一个自定义的copy((函数。如果类中有大量的字段,这可能是很平常的
  2. 使用第三方库,在这种情况下,您将向RealmObject添加外部依赖项

我的建议很简单:尝试将Money.class转换为Data类。您将获得自动生成的函数,按照惯例,它将作为RealmObjects应该是键值对来工作。

编辑

您可以使用GSON库的序列化/反序列化并破解您的方法来解决您的问题(尽管这是一种破解方法,但会完成它的工作(:

fun clone(): Money {
val stringMoney = Gson().toJson(this, Money::class.java)
return Gson().fromJson<Money>(stringMoney, Money::class.java)
}

用法:

val originalMoney = Money()
val moneyClone = originalMoney.clone()

相关内容

  • 没有找到相关文章

最新更新