You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin泛型函数语法中<T: Any>的含义是什么?

Kotlin 泛型约束 <T: Any> 含义说明

<T: Any> 属于Kotlin的泛型上界约束,作用是限定泛型参数T的取值范围:所有传入该泛型的实际类型,都必须是Any的子类型。

核心作用

Kotlin默认的泛型上界是可空的Any?,也就是说没有特殊约束的泛型,支持传入任意可空类型,甚至可以直接传入null。添加T: Any约束后,就从编译层面强制要求T必须为非空类型,所有可空类型都不符合约束,传入时会直接触发编译报错。

代码示例

// 无特殊约束的泛型函数,支持传入可空类型
fun <T> foo(param: T) {
    println(param)
}

// 带<T: Any>约束的泛型函数,仅支持传入非空类型
fun <T: Any> boo(param: T) {
    println(param)
}

fun main() {
    foo(null) // 编译正常
    boo(null) // 编译失败:Null 不属于非空类型 T 的合法取值
    boo("字符串测试") // 编译正常,String 是 Any 的非空子类型
    boo(1024) // 编译正常,Int 是 Any 的非空子类型
}

典型使用场景

  • 泛型逻辑本身不需要处理空值场景,添加该约束可以从类型层面规避空值传入,减少不必要的非空校验代码,避免运行时空指针风险
  • 使用类构造引用、泛型反射等依赖非空类型的语法特性时,必须添加该约束才能满足编译要求

内容的提问来源于stack exchange,提问作者Victor Phan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:24:02