ScalaEquals
ScalaEquals copied to clipboard
equals returns false when class inherits from other class
Given following classes:
class A() {}
class B(val x:String) extends A {
override def equals(other: Any): Boolean = ScalaEquals.equal
def canEqual(other: Any): Boolean = ScalaEquals.canEquals
}
generated equals method will always return false:
val b1 = new B("A")
val b2 = new B("A")
println(b1 == b2) // false despite the fact that 'x' has same value in both instances
Equals will return true (in this case) when "extends A" is removed from B's declaration.