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
相关产品推荐
相关产品推荐

