3

次のようなコードがあります。

import java.time._

object app {
  def main (args :Array[String]) = {
    println("app started")

    // create two ZonedDateTime objects for 1st Jan 2018, 10am UTC
    // using separate methods
    val zdt1 = ZonedDateTime.of(2018, 1, 1, 10, 0, 0, 0, ZoneId.of("UTC"))
    val zdt2 = ZonedDateTime.parse("2018-01-01T10:00:00Z")

    println(s"COMPARING: $zdt1 and $zdt2")
    println("== check:      " + (zdt1 == zdt2))
    println(".equals check: " + (zdt1.equals(zdt2)))
    println(".isEqual check " + (zdt1.isEqual(zdt2)))

    println("app finished")
  }
}

ここで利用可能なコード: https://ideone.com/43zf8B

問題:

  1. これらは両方とも型指定された ZonedDateTime オブジェクトです
  2. .isEqual() メソッドによると、それらは同等です。
  3. それらは . equals() メソッドによると同等ではありません

ただし、私のテスト スイートは、これらの datetime インスタンスが含まれるクラスに対して beEquals 操作を使用してディープ マッチングを使用するため、.equals() が true を返すようにそれらを正規化する方法が必要です。

どうすればそれらを正規化できますか?

4

2 に答える 2