java - Kotlin 函数参数中的 String 变量自动转换为 java.lang.String,为什么?

标签 java string kotlin

我刚刚用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/

相关文章:

java - 如何从Spring Security获取密码?

java - FirefoxDriver 无法正确处理点击

mysql - 如何将一个位值变成一个字符串

java - 将整个 JList 显示到 JTextArea

android - 以编程方式使用外部应用程序编辑 pdf

java - 滚动时移动 RecyclerView

java - 泛型方法的返回类型

string - 如何格式化数字以显示至少 n 位小数

android - runInTransaction block 内的挂起方法

java - Activity 内的 Android 上下文可以是静态的吗?