A query returns a List. This always seemed too broad an
interface for that return value to me.

There are two things that I dare do with the list that is returned:

- iterate over it
- ask for it's size()

A List promises so many things:

- can I modify the list?
- can I check if the list contains an object?
- are there any rules w.r.t. thread access/synchronisation?
- can I compare the list to another list(all objects in Java implement equals)?


Consider contains() for IncrementalFaultList(paged query). It *could*
return false even if the query returned the object. Or rather, if I add
weak references to IncrementalFaultList and do not modify it it
could.

    /**
     * @see java.util.Collection#contains(Object)
     */
    public boolean contains(Object o) {
        synchronized (elements) {
            return elements.contains(o);
        }
    }

The applications I work on use only the Iterable interface,
even if performQuery() returns a List and then only from
a single thread.


-- 
Øyvind Harboe
http://www.zylin.com/zy1000.html
ARM7 ARM9 XScale Cortex
JTAG debugger and flash programmer

Reply via email to