проекция.

вая Котлин 1.1. Дляinstance какого-то класса,instance::class.java а также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 для большей согласованности. Есть ли аргументы против этого?

Ответы на вопрос(1)

Ваш ответ на вопрос