假设我想要一个类型变量T,它扩展了某个类并实现了一个接口.比如:

class Foo <T : Bar implements Baz> { ... }

What is the syntax for this in Kotlin?

推荐答案

Only one upper bound can be specified inside the angle brackets.

当存在多个约束时,Kotlin为通用约束提供了不同的语法:

class Foo<T>(val t: T) where T : Bar, T : Baz { ... }

and for functions:

fun <T> f(): Foo where T : Bar, T : Baz { ... }

It is documented here.

Kotlin相关问答推荐

创建具有共同父类型的两种不同类型对象的列表的最有效方法是什么?

Lambda和普通Kotlin函数有什么区别?

Kotlin中一个接口的实现问题

在Kotlin中的嵌套when语句中,else块是强制性的吗?

合并状态流

在 kotlin 原始字符串中转义三重引号

在kotlin中匹配多个变量

init中的NPE抽象函数变量

如何在 Jetpack Compose 中启动和停止动画

Eclipse:无法安装 Kotlin 插件

将 SharedPreferences 中的值公开为流

从 HashMap 检索时的 NPE,即使 containsKey() 在多线程环境中返回 true

为什么在 Kotlin 中调用私有构造函数会导致错误为无法访问 是什么?

如何使 TextInputEditText 只读?

Kotlin中的测试无法访问受保护(protected)的方法

Kotlin中的Memoization功能

Kotlin - computed var 属性的用处?

Jetpack Compose 折叠工具栏

使用 kotlin 每 3 位数添加逗号或点

目前不支持 Gradle 项目的自动库版本更新.请手动更新您的 build.gradle