我希望通过使用接口在Kotlin类中注入(丰富)行为和状态。例如:
在Scala中使用Traits(可行),现在正在寻找Kotlin的解决方案。
在 Kotlin 中尝试(不起作用):
在接口实例变量行会导致这个错误:
class Impl : Observable
,其中Observable包含状态。在Scala中使用Traits(可行),现在正在寻找Kotlin的解决方案。
object Test extends App {
val impl = new Impl()
val observer = new Observer()
impl.register(observer)
}
trait Observable {
// How to do this in Kotlin?
val observers = List()
def register(observer: Observer) {
observers.add(observer)
}
}
class Observer
class Parent
class Impl extends Parent with Observable
在 Kotlin 中尝试(不起作用):
fun main(args: Array<String>) {
val impl = Impl()
val observer = Observer()
impl.register(observer)
}
interface Observable {
// Error: Kotlin: Property initializers are not allowed in interfaces
val observers = mutableListOf<Observer>()
fun register(observer: Observer) {
observers.add(observer)
}
}
class Observer
open class Parent
class Impl : Parent(), Observable
在接口实例变量行会导致这个错误:
Kotlin: Property initializers are not allowed in interfaces
。
如何在Kotlin接口中初始化实例变量?
(请注意,在此设计中,父类不应被更改/更新。)