如何在kotlin中使用self类型参数作为接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在kotlin中使用self类型参数作为接口相关的知识,希望对你有一定的参考价值。

我有一个带有Self类型参数的类Element

interface Element<Self: Element<Self>> {
    val rules: Set<(Self) -> Boolean>
}

我现在如何创建一个List with Element作为类型参数,因为以下当然不起作用。

val list: List<Element>

提前致谢

答案

发生的错误是你缺少“<*>”,它应该是这样的:

val list: List<Element<*>>

但我建议您根据文档使用MutableList:

列表:通用的有序元素集合。此接口中的方法仅允许对列表进行只读访问;通过MutableList接口支持读/写访问。

MutableList:支持添加和删除元素的通用有序元素集合。

您的列表应如下所示:

var myList: MutableList<Element<*>> = mutableListOf<Element<*>>()

以上是关于如何在kotlin中使用self类型参数作为接口的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kotlin 的 JS 接口中使用可选参数调用

将类类型作为参数传递并针对 Kotlin 中的另一个对象检查类型

Kotlin语法总结:函数类型和高阶函数

Kotlin函数 ⑧ ( 函数引用 作为函数参数 | ::函数名 | 函数类型 作为函数返回值类型 )

Kotlin泛型 ① ( 泛型类 | 泛型参数 | 泛型函数 | 多泛型参数 | 泛型类型约束 )

Kotlin 匿名扩展函数作为参数时的语义