【发布时间】:2021-08-27 20:01:14
【问题描述】:
Fun main(){
Val a = mutableListOf(2, 'j')
}
// What is the type of a?
我想变成这样:val a = mutableListOf,但我没有类型
【问题讨论】:
标签: kotlin types integer character
Fun main(){
Val a = mutableListOf(2, 'j')
}
// What is the type of a?
我想变成这样:val a = mutableListOf,但我没有类型
【问题讨论】:
标签: kotlin types integer character
Int和Char的常见超类型是Comparable<*>和Serializable,所以a的类型是:
MutableList<Comparable<*> & Serializable>根据您将对结果列表执行的操作(例如,初始化属性、从函数返回等),一些类型信息将丢失并且类型将被“简化”为:
MutableList<out Any>或:
MutableList<Any>【讨论】:
MutableList<Comparable<*>>,因为这是最具体的常见类型。不过,它并不比 Any 有用,但在某些情况下,由于类型是不变的,因此区别很重要。
val,它的推断类型就不受下游代码的影响。例如,给定一个函数fun foo(list: MutableList<Any>),您将无法调用foo(a),其中a 是mutableListOf 的推断结果。但是如果你直接传递mutableListOf函数的结果,它会推断它匹配它的目标类型,比如foo(mutableListOf(2, 'j')。