Int :: class.javaPrimitiveType.kotlin引用不等于Int :: class.javaObjectType.kotlin

我认为情况2也应该是真实的。 这种行为是正确的吗?

// 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总是返回KClass构造的原始Class实例,他们也可能是相同的(===)。

简短的回答:是的。

漫长的回答:当然,很难说出什么样的行为应该是什么样的,因为我们没有人参与到做出这个决定或者编写这个代码。 不过,我不认为这两个对象其实是同一个对象, 平等就足够了,这里不需要引用平等。