如何限制Kotlin泛型参数T和R为非可空类型?
如何限制泛型参数T和R为非可空类型
在Kotlin中,要将泛型参数限制为非可空类型,可以通过where子句为泛型参数添加Any上界约束——因为Any是所有非空类型的根类型,这样就能确保T和R不能被指定为可空类型(比如T?)。
修改后的函数签名如下:
fun <T, R> JsonNullable<T>.map(func: (T) -> R): JsonNullable<R> where T : Any, R : Any { // 函数实现 }
补充说明
- 这个约束会强制调用方传入的T和R必须是非空类型,比如
JsonNullable<String>可以调用该map方法,但JsonNullable<String?>则不行。 - 如果你的
JsonNullable类本身是用来包装可空值的,这种约束会让这个map方法仅适用于包装了非空值的实例,完全匹配你对泛型参数非空的要求。
内容的提问来源于stack exchange,提问作者gstackoverflow
相关产品推荐
相关产品推荐

