The abstract supertype of all types representing definite
values. Any two values which are assignable to
may be compared for value equality using the
operators, even if the values are of different concrete
true == false 1 == "hello world" "hello"+" "+"world" == "hello world" Singleton("hello world") == ["hello world"]
Null is not a subtype of
null cannot be compared to any other value
== operator. Thus, value equality is not
defined for optional types. This neatly bypasses the
problem of deciding the value of the expression
null==null, which is simply illegal.
In extreme cases it is acceptable for two values to be
equal even when they are not instances of the same class.
For example, the
1 and the
1.0 are considered equal. Except in these extreme
cases, instances of different classes are considered
The hash value of the value, which allows the value to be an element of a hash-based set or key of a hash-based map. Implementations must respect the constraint that:
Therefore, a class which refines
Note that when executing on a Java Virtual Machine, the
A developer-friendly string representing the instance.
Concatenates the name of the concrete class of the
instance with the
Determine if two values are equal.
For any two non-null objects
x == y
Implementations should respect the constraints that:
Furthermore it is recommended that implementations
ensure that if
A class which explicitly refines
Note that an implementation of