我想复制领域对象,然后更改第二个,而不重新分配所有键。我该怎么做?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((函数,这给您留下了两个选项:
- 在Money类中创建一个自定义的copy((函数。如果类中有大量的字段,这可能是很平常的
- 使用第三方库,在这种情况下,您将向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()