在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)
})我不知道为什么:Any是必要的。
如果我把它写成fun <T> SelectQueryBuilder.parseList(...),Android会抱怨

然而,当您将:Any添加回时,该错误就会消失。
现在,就我而言,T应该暗示T:Any,尽管情况显然不是这样的。为什么会这样呢?那又有什么区别呢?
发布于 2018-05-09 08:22:46
现在,就我而言,
T应该暗示T:Any
T意味着T:Any?,其中Any?最接近于Java的Object。使用T:Any,您指定了一个非空类型。
发布于 2018-05-09 08:33:23
https://stackoverflow.com/questions/50248546
复制相似问题