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