Kotlin对象等于Java对象等于

时间:2018-04-11 10:12:00

标签: java android kotlin

我创建了一个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)));

2 个答案:

答案 0 :(得分:3)

我猜你的User课程是data class?然后,您将获得比较equals的成员变量的默认实现。

答案 1 :(得分:1)

  1. 如果你有相同的User课程,那么在这两种情况下你都会得到相同的结果。即如果您的Java代码使用Kotlin data class,它将返回true;如果Kotlin代码使用Java(或Kotlin非data)类而没有覆盖equals,则它将返回false

  2. 在Kotlin中,与Java不同,编写User("Alex", 1) == User("Alex", 1)会更好,更安全。这将为非空对象调用equals并在Java将崩溃的左侧正确处理null