私はちょうどKotlinといくつかのコードを書いた、といくつかの問題を持って、ここでのテストコードです:Kotlin関数パラメータの文字列変数がjava.lang.Stringに自動キャストされます、なぜですか?
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
になります。その理由は? もう1つ私はそれを混乱させる:ブールはwhen
で使用できませんか?なぜ?前もって感謝します!
fun testString(s: Any)
{
when(s)
{
is Int -> println("Int parameter!")
is String -> println("String parameter!")
is Boolean -> println("Boolean parameter!")
else -> println("Other object!")
}
}
詳細:あなたはis
を忘れてしまったこの作品
それは私のために働く、多くのありがとう!!! – SpkingR