繁体   English   中英

在密封的 class 中为抽象 val 赋值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM