ceylon.language.Identifiable.ceylon Maven / Gradle / Ivy
"The abstract supertype of all types with a well-defined
notion of identity. Values of type `Identifiable` may be
compared using the `===` operator to determine if they are
references to the same object instance.
For the sake of convenience, this interface defines a
default implementation of value equality equivalent to
identity. Of course, subtypes are encouraged to refine this
implementation."
by ("Gavin")
tagged("Basic types")
shared interface Identifiable {
"Identity equality comparing the identity of the two
values. May be refined by subtypes for which value
equality is more appropriate. Implementations must
respect the constraint that if `x===y` then `x==y`
(equality is consistent with identity)."
shared default actual Boolean equals(Object that)
=> if (is Identifiable that)
then this===that
else false;
"The system-defined [[identity hash value|identityHash]]
of this instance. Subtypes which refine [[equals]] must
also refine `hash`, according to the general contract
defined by [[Object.equals]]."
see (`function identityHash`)
shared default actual Integer hash => identityHash(this);
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy