![](/img/trans.png)
[英]How to serialize kotlin sealed class with open val using kotlinx serialization
[英]Assigning abstract val a value in sealed class
我有一个密封的 class 从中继承了几个抽象类。 由于密封的 class 中有一堆字段需要在抽象 class 中初始化,我试图将其移至辅助构造函数,但是辅助构造函数不允许我们声明override val
字段以使代码更简洁. 我能想到的唯一另一种方法是使字段lateinit var
,但随后我失去了不变性。
sealed class Animal {
abstract val object1 : SomeObject
abstract val object2 : SomeObject2
abstract val object3 : SomeObject3
abstract val object4 : SomeObject4
}
abstract class GrassEaterAnimal : Animal {
//trying to do this
constructor(override val object1 : SomeObject, override val object2 : SomeObject2, override val object3 : SomeObject3, override val object4 : SomeObject4, func : (field1, field2) -> Foo)
}
有没有办法让这段代码更干净或有任何其他建议可以在这种情况下提供帮助?
您可以在主构造函数中实现/初始化属性:
abstract class GrassEaterAnimal(
override val object1: SomeObject,
override val object2: SomeObject2,
override val object3: SomeObject3,
override val object4: SomeObject4,
) : Animal()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.