我有一个带有类型参数的抽象类:
abstract class AClass<T>(){ ___ }
但是,我想指定类型
T
必须是 AClass
本身的子类型。
abstract class AClass<T : AClass>(){ ___ }
这行不通。我也尝试过:
abstract class AClass<T : AClass<*>>(){ ___ }
但是 IDE 给了我一个
Finite Bound Restriction
错误。
是否有可能在 Kotlin 中实现所需的行为?
尽管其他一些语言支持此 self 类型参数,但这在 kotlin 中是不可能。因为它可能会导致递归泛型。 Kotlin 团队报告称,此功能的实现很难适应 Kotlin 设计。而且自我类型感觉太吵了。
有用的链接:
https://youtrack.jetbrains.com/issue/KT-6494#comment=27-882961