commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hope, Matthew" <Matthew.H...@capitalone.com>
Subject RE: [collections] Questions....
Date Wed, 20 Aug 2003 09:02:22 GMT


> -----Original Message-----
> From: Takuya Murata [mailto:takusi@manjiro.net] 
> Sent: 20 August 2003 04:29
> To: Jakarta Commons Developers List
> Subject: Re: [collections] Questions....
> 
> 
> Hi,
> 
> So the question is do we really need SingletonIterator and 
> such. If we 
> want to eliminate the number of methods or classes, then what 
> about one 
> class for all of collections or iterators? I suppose the use of 
> singleton methods and classes is almost always to provide an object 
> matching a data type you want. Thus, we can have a class like
> 
> class Singleton implements List, SortedSet, Bag, Iterator, 
> ListIterator 
> {
> }

this sounds hugely dangerous - the javadocs for List#equals(Object) for
example stipulate:
Compares the specified object with this list for equality. Returns true if
and only if the specified object is also a list, both lists have the same
size, and all corresponding pairs of elements in the two lists are equal.
(Two elements e1 and e2 are equal if (e1==null ? e2==null : e1.equals(e2)).)
In other words, two lists are defined to be equal if they contain the same
elements in the same order. This definition ensures that the equals method
works properly across different implementations of the List interface.

whereas Set#equals(Object) state:
Compares the specified object with this set for equality. Returns true if
the specified object is also a set, the two sets have the same size, and
every member of the specified set is contained in this set (or equivalently,
every member of this set is contained in the specified set). This definition
ensures that the equals method works properly across different
implementations of the set interface.

This is only one of many conflicts.

Just implementing the method signatures of such classes without implementing
their 'contracts' (even if the contract is only the official line on what
they should and shouldn't do) is a recipe for confusion and bugs...

Matt
 
**************************************************************************
The information transmitted herewith is sensitive information intended only
for use by the individual or entity to which it is addressed. If the reader
of this message is not the intended recipient, you are hereby notified that
any review, retransmission, dissemination, distribution, copying or other
use of, or taking of any action in reliance upon this information is
strictly prohibited. If you have received this communication in error,
please contact the sender and delete the material from your computer.

Mime
View raw message