我正在学习Kotlin,用C++和java后台.我本以为下面会打印true,而不是false.我知道==对应equals.equals的默认实现是否没有比较每个成员,即firstNamelastName?如果是这样的话,它会不会认为字符串值相等(因为==再次映射到equals)?很明显,在Kotlin ,我还没有弄清楚与平等和身份相关的东西.

class MyPerson(val firstName: String, val lastName: String)

fun main(args: Array<String>) {
   println(MyPerson("Charlie", "Parker") == MyPerson("Charlie", "Parker"))
}

推荐答案

The default equals implementation you're describing exists only for data classes. Not for regular classes where the implementation is inherited from Any, and just make the object equal to itself.

Kotlin相关问答推荐

调用即发即忘方法--哪个作用域?

jOOQ Kotlin Coroutines - Select all and exists查询

Gradle:无法创建 ExtensiblePolymorphicDomainObjectContainer

使用 kotlin 流删除 map 中具有某些相似性的值

MyType.()在 Kotlin 中是什么意思?

Android Jetpack Compose:在空的 Compose 活动中找不到 OutlinedTextField (Material3)

Kotlin 启动与启动(Dispatchers.Default)

Kotlin 中获取类简单名称的最佳实践

Kotlin 使用迭代索引过滤 lambda 数组

如何禁用智能投射突出显示 Kotlin?

将 Completable 转换为 Single 的规范方法?

如何在 kotlin 中生成 json 对象?

Hilt Activity 必须附加到 @AndroidEntryPoint 应用程序

如果 Maybe 完成,则从其他来源将 Maybe 转换为 Single

Android 上的 Kotlin:将map到list

(kotlin的Moshi)@Json vs@field:Json

从命令行运行Java到Kotlin转换器?

如何使用协调器布局和行为在CardView上完成此动画?

如何在kotlin用mockito模仿lambda

任务':app:kaptDebugKotlin'的Kotlin执行失败