Kotlinのメソッドで自分自身のクラスを返したい
タイトルのことを実現するには↓のように実装するだけです。
open class A {
fun chain(): A {
return this
}
}
このAを継承したサブクラスで上記メソッドを実行すると
メソッドの実装どおり、Aクラスを返すことになります。
class B: A {
}
私はイメージとして、
B().chain() では B クラスを返したいです。
これを実現できる方法はありますか?
【追記】
@kunif さんの回答は限りなく正解に近いものだと思うのですが↓のような結果になりました。
何故かBクラスのメソッド内部でしか chain メソッドが見えなくなりました。
open class A {
fun <T:A>T.chain(): T {
return this
}
}
class B: A() {
fun test() {
val chainメソッド参照可能返ってくるのはBクラス = chain()
}
}
A().chain() // これは当たり前だけどchainメソッドは参照できない
val ss = B().chain() // ここでもchainメソッドは参照できない できそうなのに。