【发布时间】:2014-11-17 06:59:28
【问题描述】:
我在做:
mySpinner.setSelection(myObj?.spinIdx)
与:
var spinIdx: Int = 0
编译器抱怨“以下函数都不能被调用” 命题中的 setSelection(Int)。为什么?
mySpinner.setSelection(myObj?.spinIdx as Int)
解决了这个问题,但我不明白这里的编译器。
【问题讨论】:
标签: kotlin
我在做:
mySpinner.setSelection(myObj?.spinIdx)
与:
var spinIdx: Int = 0
编译器抱怨“以下函数都不能被调用” 命题中的 setSelection(Int)。为什么?
mySpinner.setSelection(myObj?.spinIdx as Int)
解决了这个问题,但我不明白这里的编译器。
【问题讨论】:
标签: kotlin
myObj?.spinIdx 当myObj 为空时返回null。阅读“安全通话”here。编译失败,因为 setSelection 方法只接受不能是 null 的 Int。
如何解决:
如果myObj可以是null:
if (myObj != null) {
mySpinner.setSelection(myObj.spinIdx)
}
如果myObj不能是null:
mySpinner.setSelection(myObj.spinIdx)
【讨论】:
mySpinner.setSelection(myObj?.spinIdx ?: 0) 或mySpinner.setSelection(myObj!!.spinIdx) 如果可以接受抛出 NPE。 AFAIK 后者相当于as Int 的情况。