[jdom-interest] hashCode() and equals()

Elliotte Rusty Harold elharo at metalab.unc.edu
Sat Jun 2 09:28:01 PDT 2001

At 10:31 AM -0500 6/2/01, philip.nelson at omniresources.com wrote:

>So it seems we have some choices
>1 - break the java hashcode .equals contract


>2 - create a different method that means equal namespace like
>equalsNoPrefix() and then make equals and hashcode and == all based on
>prefix and uri

Unfortunately developers will use the familiar equals() method when 
they should be using equalsIgnoreprefix(). This will lead to systems 
like the one Phil Nelson's hypothesized where the prefix matters and 
the namespace URI doesn't. Also unacceptable.

(Note: I'm not convinced that WSDL is such a system, but I don't want 
to make it easy to create one by accident.)

>3 - make the list returned by getAdditionalNamespaces not live (undead?) and
>let the chips fall where they may.

Possible, but unpleasant.

>4 - split up Namespace and prefix into separate classes and reinvent the
>namespace api

I think the namespace API might need to be revisited one more time. 
I'm not convinced we need to split up Namespace and prefix into 
separate classes. On the other hand, perhaps the Namespace class 
doesn't need to be exposed? Could we plausibly make it package 
private and just have a public API in Element which exposes the 
various namespaces and namespace mappings as strings? If so, all the 
issues about what to do with the equals() method would become moot. 
We could do whatever we needed internally without worrying about 
confusing developers.

| Elliotte Rusty Harold | elharo at metalab.unc.edu | Writer/Programmer |
|                  The XML Bible (IDG Books, 1999)                   |
|              http://metalab.unc.edu/xml/books/bible/               |
|   http://www.amazon.com/exec/obidos/ISBN=0764532367/cafeaulaitA/   |
|  Read Cafe au Lait for Java News:  http://metalab.unc.edu/javafaq/ |
|  Read Cafe con Leche for XML News: http://metalab.unc.edu/xml/     |

More information about the jdom-interest mailing list