ResultOfStringPassedToVerb equals在考虑之前不考虑String

时间:2017-09-02 03:53:43

标签: scala scalatest

在下面两个逻辑上相等的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")
    }
  }
}

1 个答案:

答案 0 :(得分:0)

由于ResultOfStringPassedToVerb类没有覆盖equals方法进行比较,因此equals==(在 Scala 中, ==等于equals方法)方法正在比较m1m2' 参考地址,因为它们是2个对象,参考地址不应相同,因此equals方法返回false

您可以从 Java equals方法中找到更多详细信息:

https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-