我有一个密封类,几个抽象类从中继承。由于密封类中有一堆字段需要在抽象类中初始化,我试图将其移至辅助构造函数,但是辅助构造函数不允许我们声明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)
}
有没有办法让这段代码更干净或有任何其他建议可以在这种情况下提供帮助?