"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 > > >
