instancia :: class.java vs. instancia.javaClass

Dado Kotlin 1.1. Por uninstance de alguna clase,instance::class.java yinstance.javaClass parece ser casi equivalente:

val i = 0
println(i::class.java) // int
println(i.javaClass) // int
println(i::class.java === i.javaClass) // true

Sin embargo, hay una sutil diferencia:

val c1: Class<out Int> = i::class.java
val c2: Class<Int> = i.javaClass

instance.javaClass es insignificantemente más corto, peroinstance::class.java es más coherente con el uso correspondiente en un tipo. Si bien puedes usar.javaClass en algunos tipos, el resultado puede no ser el que esperaría:

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

Entonces, yo diría que es mejor nunca usar.javaClass para mayor consistencia ¿Hay algún argumento en contra de eso?

Respuestas a la pregunta(1)

Su respuesta a la pregunta