在下面两个逻辑上相等的ResultOfStringPassedToVerb实例的代码比较中,应该打印
两者相等
但打印
两者都不同
package msgs
import org.scalatest.FlatSpecLike
import org.scalatest.Matchers._
import org.scalatest.words.ResultOfStringPassedToVerb
/**
* Created by mogli on 9/1/17.
*/
object FlatSpecMsgs extends FlatSpecLike {
def main(args: Array[String]): Unit = {
val m1: ResultOfStringPassedToVerb = "a" should "b"
val m2 = "a" should "b"
// println(m1)
// println(m2)
if (m1.equals(m2)) {
println("both are equal")
} else {
println("both are different")
}
}
}
答案 0 :(得分:0)
由于ResultOfStringPassedToVerb
类没有覆盖equals
方法进行比较,因此equals
或==
(在 Scala 中, ==
等于equals
方法)方法正在比较m1
和m2
' 参考地址,因为它们是2个对象,参考地址不应相同,因此equals
方法返回false
。
您可以从 Java 的equals
方法中找到更多详细信息:
https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-