Kotlin 上限:`:Any` 对 Kotlin 的泛型类型推断有什么影响?

Use*_*291 3 generics android types type-inference kotlin

Kotlin for Android Developers本书中,我们遇到的扩展功能

fun <T:Any> SelectQueryBuilder.parseList(parser: (Map<String,Any?>) -> T):List<T> = parseList(object:MapRowParser<T>{
    override fun parseRow(columns: Map<String, Any?>): T = parser(columns)
})
Run Code Online (Sandbox Code Playgroud)

而且我不确定为什么这:Any是必要的。

如果我把它写成fun <T> SelectQueryBuilder.parseList(...),Android Studio 会抱怨

错误信息

而当您添加:Any后,该错误就会消失。

现在,就我而言,T应该暗示T:Any,尽管显然情况并非如此。这是为什么?它有什么区别?

Mar*_*nik 6

现在,就我而言,T应该暗示T:Any

T暗示T:Any?, whereAny?是最接近 Java 的Object. 与T:Any你指定一个非空类型。