Given Kotlin 1.1。對於一些類的instance
,instance::class.java
和instance.javaClass
似乎是等效的:instance :: class.java vs. instance.javaClass
val i = 0
println(i::class.java) // int
println(i.javaClass) // int
println(i::class.java === i.javaClass) // true
有細微的差別,但是:
val c1: Class<out Int> = i::class.java
val c2: Class<Int> = i.javaClass
instance.javaClass
是可以忽略不計短,但instance::class.java
與較爲一致相應的使用類型。雖然你可以在某些類型的使用.javaClass
,結果可能不是你所期望的:
println(i::class.java === Int::class.java) // true
println(i.javaClass === Int.javaClass) // false
println(Int::class.java === Int.javaClass) // false
println(Int.javaClass) // class kotlin.jvm.internal.IntCompanionObject
所以,我認爲這是更好地從不使用.javaClass
更多的一致性。有什麼反對的嗎?
我想我已經讀過'javaClass'被認爲已被棄用,但我現在找不到它。 – marstran