【问题标题】:Kotlin Receiver Name ClashKotlin 接收器名称冲突
【发布时间】:2022-01-27 10:13:58
【问题描述】:

当运行以下代码 sn-p 时,编译器正试图针对 kotlin.collections 中定义的接收器解析方法 isEmpty,原因我不完全理解。方法isEmptyjava.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 编译的

【问题讨论】:

    标签: java kotlin build


    【解决方案1】:

    java.util.Optional isEmpty() 是在 Java 11 中添加的。The Android version of Optional(或任何你的目标)没有它。

    只需使用 !isPresent()!isPresent 和 kotlin 语法糖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 1970-01-01
      • 2017-10-31
      • 2023-02-10
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      相关资源
      最近更新 更多