【发布时间】:2020-08-22 06:19:14
【问题描述】:
使用接口委托时有什么方法可以传递this?这将实现很好的可组合性 - 但我发现没有办法做到这一点。
意思是:
interface Foo {
}
class FooImpl(bar: Bar) : Foo {
}
class Bar: Foo by FooImpl(this) {
}
只要 FooImpl 不需要这样的参数,它就可以工作 - 但访问那里的其他类会很棒 - 也许有人知道一种方法。否则我也会感兴趣,如果这值得 KEEP,如果不值得 - 或者由于某种原因它是不可能的。
【问题讨论】:
-
可能不可能,因为如果将其传递给 FooImpl,那么 FooImpl 的 init 块可能会访问任何属性或调用成员函数,而 Bar 类没有完全初始化并正在运行。而且您知道 Bar 的 init{} 块必须具有类实例
this,因此它必须在调用 Bar 的 init{} 之前已经实现 Foo。 -
但我不完全确定将来是否有可能。
标签: kotlin interface delegation