Kotlin - 类型不匹配:必需:字符串,找到:() - >串

时间:2017-10-27 14:05:34

标签: string kotlin type-mismatch

在Kotlin,我宣布了一个List<String>

private val items = listOf<String> {
        "String1",
        "String2",
        "String3"
    }

编译器给我这个错误:

  

输入不匹配。

     

必需:字符串

     

找到:() - &gt;串

这是什么意思?我该如何解决?

P.S。对Kotlin来说很陌生,所以请耐心等待一些明显的问题。

3 个答案:

答案 0 :(得分:7)

您传递了{}中包含的参数,该参数引入了函数文字(lambda),这就是编译器找到函数类型的原因

  

找到:() - &gt;串

相反,只需使用这样的括号:

listOf("String1", "String2")

一些信息:

Kotlin允许您在()作为最后一个参数传递后传递函数。如果函数是唯一的参数,则可以将括号保留在示例中。因此代码有效但只是与函数参数类型不匹配。

答案 1 :(得分:1)

试试这个:

private val items = listOf("String1", "String2", "String3")

答案 2 :(得分:0)

我在尝试添加标头以在Kotlin中进行改装时遇到了这个问题。

Java代码为:

@Headers({"Accept: application/json",
    "userName: blah@test.com"
})

事实证明,解决方案不是listOf或arrayOf,而是仅删除{}

科林解决方案:

@Headers("Accept: application/json",
    "userName: blah@test.com"
)

参考:https://github.com/square/retrofit/issues/2518