我刚刚用Kotlin写了一些代码,遇到了一些问题,这是测试代码:
fun testString(s: Any)
{
when(s)
{
Int -> println("Int parameter!")
String -> println("String parameter!")
//Boolean -> println("Not boolean thing!") //Why Boolean cannot use in when?
else -> println("Other object!")
}
}
var ss = "This is actual a Kotlin String!"
println(ss.javaClass.simpleName) //out: String
testString(ss)//out: Other object! Why not String???
问题是,当只打印变量时,它显示预期的输出:String (Kotlin)
,但在 testString
函数中,输出将是总是java.lang.String
,这是为什么?
然后另一个让我不高兴的是: boolean 不能在 when
中使用?为什么?提前致谢!
最佳答案
在when语句中,您需要检查参数的类型是否为Int/String/Boolean。所以返回值需要是一个 boolean 值。
因此,您需要使用 is String
而不是 String
:
fun testString(s: Any)
{
when(s)
{
is Int -> println("Int parameter!")
is String -> println("String parameter!")
is Boolean -> println("boolean thing!")
else -> println("Other object!")
}
}
那么它也适用于 boolean 值。
关于java - Kotlin 函数参数中的 String 变量自动转换为 java.lang.String,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42251904/