Prisel za mnou kolega, ze mu nefunguje Hashtable.
A opravdu, nefungovala. Mel dva klice se stejnym
obsahem, a presto je Hashtable povazovala za ruzne.
Kdyz jsem zavolal equals(), byly shodne.
Kdyz jsem je dal do tabulky, byly ruzne.

Uz jsem myslel, ze z toho zesedivim. Nakonec
jsem to objevil. Kdo mate radi kvizove otazky,
tady je cista destilace toho problemu:

public class Problem<T> {

    public boolean equal(T a, T b) {
        return a.equals(b);
    }

    static class Item {
        String s;
        public Item(String s) {this.s = s; }

        public boolean equals(Item i) {
            return s.equals(i.s);
        }
    }

    public static void main(String[] args) {
        Problem<Item> pi = new Problem<Item>();
        Item i1 = new Item("A");
        Item i2 = new Item("A");
        System.out.println("i1.equals(i2)   ... " + i1.equals(i2));
        System.out.println("pi.equal(i1,i2) ... " + pi.equal(i1, i2));
    }
}

Vystup:

i1.equals(i2)   ... true
pi.equal(i1,i2) ... false


Kvizova otazka zni: "Jak je mozny, ze ve druhem pripade to dava false?".
Odpovedi posilejte na znamou adresu tri jednicky padesat :-)

Uz jsem si rikal, ze by se mohla definice jazyka zmenit,
aby k tomuhle nemohlo dochazet.

Makub
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno             Martin Kuba
Institute of Computer Science    email: [EMAIL PROTECTED]
Masaryk University             http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
--------------------------------------------------------------

Odpovedet emailem