"michal,ježek,1987-03-09" nebo případně jinou příslušnou formu by mohla vracet 
např. metoda toString;
pak už by bylo ale asi lepší vytvořit klíč jako samostatnou třídu; faktem ale 
asi je, že většinou je klíčem String nebo nějaký numerický typ


> ------------ Původní zpráva ------------
> Od: Oto Buchta <[email protected]>
> Předmět: Re: Proč není genericita v metodách Map jako get(), remove()?
> Datum: 14.4.2011 00:45:00
> ----------------------------------------
> 2011/4/13 Miroslav Paulfranc <[email protected]>
>
> > Dobrý den.
> > Myslím si, že
> >
> > datumyNarozeni.get(p.getLogin());
> >
> > by nešlo použít, pokud by byl klíč složený z více položek.
> > Pokud by objekt Person měl např. string name a string surname, nebo by
> > došlo následně k dalšímu rozšíření - např. o rok narození, stačilo by myslím
> > pouze náležitě změnit hash a equals a vše by pořád fungovalo.
> >
> >
> Pak ale nemohu přes "michal" vkládat do mapy. To bych musel použít třeba
> "michal,ježek,1987-03-09"
> a odpovídajícím způsobem naimplementovat ten equals() a hashCode(). Ale co
> když někdo zapomene,
> že se teď už musí používat datum narození a zadá jenom "michal,ježek"?
>
>
> > > ------------ Původní zpráva ------------
> > > Od: Ondřej Fafejta <[email protected]>
> > > Předmět: Re: Proč není genericita v metodách Map jako get(), remove()?
> > > Datum: 13.4.2011 08:38:05
> > > ----------------------------------------
> > > 2011/4/13 Martin Beránek <[email protected]>:
> > > > Zdravím,
> > > >
> > > > našel jsem celkem rozumné vysvětlení:
> > > >
> > > > Restrikce se zavádějí proto, aby se něco nepokazilo.
> > > >
> > > > Zavoláním get s jiným typem se nic nepokazí. Ještě trošku umělý
> > příklad:
> > > >
> > > > Map<String,Date> datumyNarozeni = ...
> > > > class Person {
> > > >        String fullName
> > > >        String login
> > > >
> > > >        hashCode {
> > > >                return login.hashCode();
> > > >        }
> > > >
> > > >        equals(Object o) {
> > > >                return login.equals(o);
> > > >        }
> > > > }
> > > >
> > > > datumyNarozeni.put("michal",new Date());
> > > >
> > > > odnekud mi prijde objekt Person p kde je login michal, pak muzu udelat:
> > > >
> > > > datumyNarozeni.get(p) a dostanu to spravne datum
> > > >
> > > > Martin
> > > >
> > >
> > > tak tento příklad se mi hodně nelíbí. Takového programátora zatahat za
> > uši ;-)
> > > Nebudu koukat do implementace Person, jak je napsaný hashCode a equals
> > ...
> > > Určitě by každý normální programátor napsal toto:
> > >
> > > datumyNarozeni.get(p.getLogin());
> > >
> > > V každém případě - původní dotaz je docela namístě.
> > > Úryvek ze stackoverflow mě úplně nepřesvědčil ...
> > > Kdyby člověk použil
> > > Map<List, Something> místo Map<ArrayList, Something>, tak by to
> > > fungovalo i s ArrayList i s LinkedList.
> > >
> > > Fafi
> > >
> > >
> > >
> >
>
>
>
> --
> Oto 'tapik' Buchta, [email protected], http://tapikuv.blogspot.com
>
>
>

Odpovedet emailem