Ond*_*žka 7 generics subclass self-type kotlin
让我们来学习这些课程:
class A {
fun foo(): A = this
}
class B: A() {
fun bar() { ... }
}
Run Code Online (Sandbox Code Playgroud)
现在我希望 Kotlin 能够检测到我何时调用foo
,B
并给出输入为 的结果B
。这样我就可以写:
B().foo().bar()
Run Code Online (Sandbox Code Playgroud)
对于 kotlin 1.4.20,这是不可能的 - 它需要显式转换为B
after foo()
。
如果编译器清楚地看到该函数返回 ,也许它可以由编译器处理this
。或者也许我们可以明确暗示......
class A {
fun <Self> foo(): Self = this
}
Run Code Online (Sandbox Code Playgroud)
我无法使用扩展函数,因为我需要 Java 类具有这些属性。
我已经阅读了关于该主题的Kotlin 论坛帖子,但是我没有看到这个案例得到解决。但也许这是暗示的。不管怎样,目前还没有实施。
这里还有一篇好文章。
我读过这个问题How to指定“自己的类型”作为Kotlin的返回类型,并且我尝试了“递归类型”方法,但是如果我想在子类和基类上都有该类型,它就不起作用:
Type parameter Me of 'HasStatus' has inconsistent values: BaseClass, Subclass
Run Code Online (Sandbox Code Playgroud)
this
如果方法返回,还有其他技巧可以说服 Kotlin 返回类型吗this
?