Determine if two values are equal. Implementations
should respect the constraints that:
- if
x===y
then x==y
(reflexivity),
- if
x==y
then y==x
(symmetry),
- if
x==y
and y==z
then x==z
(transitivity).
Furthermore it is recommended that implementations
ensure that if x==y
then x
and y
have the same
concrete class.
A class which explicitly refines equals()
is said to
support value equality, and the equality operator
==
is considered much more meaningful for such
classes than for a class which simply inherits the
default implementation of identity equality from
Identifiable
.