KotlinのClass Delegationでメンバ変数を委譲先にできないのはなぜ?
Kotlinで下記のように、メンバ変数を委譲先にするとUnresolved reference: helloImplとなります。
interface IHello {
fun hello()
}
class HelloImpl: IHello {
override fun hello() {
println("Hello")
}
}
class Hello: IHello by helloImpl {
val helloImple = HelloImpl()
}
byの後ろで直接インスタンスを生成した場合や
class Hello: IHello by HelloImpl() {
}
コンストラクタの引数を使用した場合はエラーになりません。
class Hello(val helloImpl: HelloImpl) : IHello by helloImpl {
}
しかし、直接インスタンスを渡すと、委譲先のオブジェクトにアクセスできませんし、クラス内部で生成できるのでコンストラクタの引数にしたくもありません。
メンバ変数を委譲先にする方法はないのでしょうか?
あるいは、IHello by HelloImpl()
で生成したオブジェクトにアクセスする手段はないでしょうか?this.HelloImpl
等で。