運行以下代碼片段時,編譯器正嘗試isEmpty針對 中定義的接收器決議該方法kotlin.collections,原因我不完全理解。該方法isEmpty定義在java.util.Optional. 如果我替換isEmpty為!isPresent,代碼會按預期作業。
private fun getThreadCount(param: Optional<String>): Int {
return if(param.isEmpty) {
DEFAULT_THREAD_COUNT
} else {
val threads = param.get()
try {
threads.toInt()
} catch (ex: NumberFormatException) {
throw RuntimeException("Failed to parse threads parameter: $threads")
}
}
}
> Task :compileKotlin FAILED
e: /home/.../TaskParams.kt: (51, 25): Function invocation 'isEmpty(...)' expected
e: /home/.../TaskParams.kt: (51, 25): Unresolved reference. None of the following
candidates is applicable because of receiver type mismatch:
public inline fun <T> Array<out ???>.isEmpty(): Boolean defined in kotlin.collections
public inline fun BooleanArray.isEmpty(): Boolean defined in kotlin.collections
public inline fun ByteArray.isEmpty(): Boolean defined in kotlin.collections
public inline fun CharArray.isEmpty(): Boolean defined in kotlin.collections
public inline fun CharSequence.isEmpty(): Boolean defined in kotlin.text
public inline fun DoubleArray.isEmpty(): Boolean defined in kotlin.collections
public inline fun FloatArray.isEmpty(): Boolean defined in kotlin.collections
public inline fun IntArray.isEmpty(): Boolean defined in kotlin.collections
public inline fun LongArray.isEmpty(): Boolean defined in kotlin.collections
public inline fun ShortArray.isEmpty(): Boolean defined in kotlin.collections
這是針對 Kotlin 1.3.72 編譯的
uj5u.com熱心網友回復:
java.util.Optional isEmpty()在 Java 11 中添加。Android 版本Optional(或任何您的目標)沒有它。
只需使用!isPresent(), 或!isPresentkotlin 語法糖即可。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/396750.html
