我创建了一个User类,并在两个具有相同内容的对象上调用equals
println("equals = ${User("Alex", 1).equals(User("Alex", 1))}")
输出true但不是两个对象不同吗?
同样的Java给出了错误:
System.out.print("equals = "+new User("Alex",1).equals(new User("Alex",1)));
答案 0 :(得分:3)
我猜你的User
课程是data class
?然后,您将获得比较equals
的成员变量的默认实现。
答案 1 :(得分:1)
如果你有相同的User
课程,那么在这两种情况下你都会得到相同的结果。即如果您的Java代码使用Kotlin data class
,它将返回true
;如果Kotlin代码使用Java(或Kotlin非data
)类而没有覆盖equals
,则它将返回false
。
在Kotlin中,与Java不同,编写User("Alex", 1) == User("Alex", 1)
会更好,更安全。这将为非空对象调用equals
并在Java将崩溃的左侧正确处理null
。