小编hog*_*oge的帖子

Kotlin:我的通用函数中未经检查的强制转换

我正在尝试使用泛型将我的两个函数合并为一个。

fun <T> List<T>.toElementOrSize1(keySelector: (T) -> String): String {
    val key = keySelector(first())
    return if (all { keySelector(it) == key }) key else "size = $size"
}

fun <T> List<T>.toElementOrSize2(keySelector: (T) -> String?): String? {
    val key = keySelector(first())
    return if (all { keySelector(it) == key }) key else "size = $size"
}
Run Code Online (Sandbox Code Playgroud)

我可以这样写:

fun <T, K : String?> List<T>.toElementOrSize(keySelector: (T) -> K): K {
    val key = keySelector(first())
    return if (all { keySelector(it) == key }) {
        key
    } …
Run Code Online (Sandbox Code Playgroud)

generics casting kotlin

4
推荐指数
1
解决办法
3614
查看次数

标签 统计

casting ×1

generics ×1

kotlin ×1