This abstract class models the addresses in a message.
Subclasses provide specific implementations. Subclasses
will typically be serializable so that (for example) the
use of Address objects in search terms can be serialized
along with the search terms.
The equality operator. Subclasses should provide an
implementation of this method that supports value equality
(do the two Address objects represent the same destination?),
not object reference equality. A subclass must also provide
a corresponding implementation of the hashCode
method that preserves the general contract of
equals and hashCode - objects that
compare as equal must have the same hashCode.