The abstract supertype of all types representing definite
values. Any two values which are assignable to Object
may be compared for value equality using the == and !=
operators, even if the values are of different concrete
type:
true == false
1 == "hello world"
"hello"+" "+"world" == "hello world"
Singleton("hello world") == ["hello world"]
However, since Null is not a subtype of Object, the
value null cannot be compared to any other value
using the == 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.
A concrete subclass of Object must refine equals()
and hash (or inherit concrete refinements), providing
a concrete definition of value equality for the class.
| Initializer |
Object() |
| Attributes | |
hash | Source Codeshared formal Integer hashThe 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 |
string | Source Codeshared default String stringA developer-friendly string representing the instance.
Concatenates the name of the concrete class of the
instance with the |
| Methods | |
equals | Source Codeshared formal Boolean equals(Object that)Determine if two values are equal. Implementations should respect the constraints that:
Furthermore it is recommended that implementations
ensure that if A class which explicitly refines |