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

Kotlin中是否支持声明多个reified泛型类型参数?

Kotlin 完全支持在 inline 函数中定义多个 reified 类型参数,你描述的场景可以正常实现。

你给出的扩展写法基本正确,仅需要修正返回值 Pair 的泛型参数语法,将圆括号替换为尖括号即可,正确的函数声明如下:

inline fun <reified T, reified U> func(column: String): Pair<T, U> {
    // 函数内部可以正常通过 T::class、U::class 获取两个泛型的实际类型信息
    TODO("补充你的业务逻辑实现")
}

以下是一个可运行的完整示例,供你参考:

inline fun <reified T, reified U> func(column: String): Pair<T, U> {
    // 模拟根据列名获取对应值的业务逻辑
    val firstVal: Any = when(column) {
        "user" -> 1001
        "course" -> "高等数学"
        else -> false
    }
    val secondVal: Any = when(column) {
        "user" -> "张三"
        "course" -> 4.9f
        else -> "无数据"
    }

    // 可选:增加类型校验,避免转换异常
    if (firstVal !is T) throw IllegalArgumentException("第一个值类型不匹配,期望类型:${T::class.simpleName}")
    if (secondVal !is U) throw IllegalArgumentException("第二个值类型不匹配,期望类型:${U::class.simpleName}")

    return Pair(firstVal, secondVal)
}

// 调用测试
fun main() {
    val (userId, userName) = func<Int, String>("user")
    println("用户ID:$userId,用户名:$userName") 
    // 输出:用户ID:1001,用户名:张三

    val (courseName, courseScore) = func<String, Float>("course")
    println("课程名:$courseName,课程评分:$courseScore")
    // 输出:课程名:高等数学,课程评分:4.9
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:06:04