如何指定类的类型参数必须继承类本身? ( A 类<T : A>{ __ } ) |科特林

问题描述 投票:0回答:1

我有一个带有类型参数的抽象类:

abstract class AClass<T>(){ ___ }

但是,我想指定类型

T
必须是
AClass
本身的子类型。

abstract class AClass<T : AClass>(){ ___ }

这行不通。我也尝试过:

abstract class AClass<T : AClass<*>>(){ ___ }

但是 IDE 给了我一个

Finite Bound Restriction
错误。

是否有可能在 Kotlin 中实现所需的行为?

kotlin inheritance type-parameter
1个回答
0
投票

尽管其他一些语言支持此 self 类型参数,但这在 kotlin 中是不可能。因为它可能会导致递归泛型。 Kotlin 团队报告称,此功能的实现很难适应 Kotlin 设计。而且自我类型感觉太吵了。

有用的链接:

https://youtrack.jetbrains.com/issue/KT-6494#comment=27-882961

https://discuss.kotlinlang.org/t/self-types/371/86

https://discuss.kotlinlang.org/t/this-type/1421/10

© www.soinside.com 2019 - 2024. All rights reserved.