Ссылка Int :: class.javaPrimitiveType.kotlin не равна Int :: class.javaObjectType.kotlin

Я думаю, что CASE 2 также должен вернуть true. Правильно ли это поведение?

// CASE 1 Int::class.javaPrimitiveType!!.kotlin == Int::class.javaObjectType.kotlin // true // CASE 2 Int::class.javaPrimitiveType!!.kotlin === Int::class.javaObjectType.kotlin // false 

Это правильно. KClass для примитивного типа и соответствующего типа объекта равны (==), однако они созданы из разных экземпляров java.lang.Class и поскольку .java всегда возвращает исходный экземпляр Class из KClass был построен KClass , t быть возможным для них также быть идентичными (===).

Короткий ответ: да.

Длинный ответ: конечно, трудно сказать, какое должно быть намеренное поведение, поскольку никто из нас не принимал участия в принятии этого решения или не писал этот код. Однако я не думаю, что это действительно требование, чтобы эти два объекта были фактически одним и тем же объектом; равенства достаточно, ссылочное равенство здесь не требуется.