首页 > 解决方案 > 如何在 Kotlin 扩展函数中使用泛型

问题描述

我有 2 个功能基本相同,所以我想创建一个扩展功能。

问题是我需要提取每个类的数据才能得到正确的结果,我想创建一个通用函数,并在这个函数内部决定访问哪个类成员内部when语句。

但是当我尝试T在 when 语句中调用时,我得到了Type parameter 'T' is not an expression

我究竟做错了什么?

我的功能:

fun <T: Any> List<T>.extractWithSepreation(errorString: String): String {
    var errorString = "There is no available $errorString"

    if (this.isEmpty()) {
        return errorString
    }
    
    errorString = ""
    this.forEachIndexed { index, item ->
        when(T)
    }

}

标签: androidkotlingenericskotlin-android-extensions

解决方案


错误消息几乎说明了一切。T不是表达式,因此不能在内部使用when(...)T只是指 的itemList

你不是说使用类似的东西:

when(item) {
   is ClassA -> doSomething()
   is ClassB -> doSomethingElse()
}

?


推荐阅读