No klasicky priklad se uvadi u entitnich objektu, kdy si predstav, ze mas vytisk knihy, ten je identifikovan jednak cislem titulu a dale prirustkovym cislem v ramci daneho titulu. Pokud by jsi pouzil defaultni implementaci, tak by se to porovnavalo pouze na rovnost instanci.

To znamena, ze pokud by jsi udelal:

Vytisk v1 = new Vytisk(123455,"1/2006");
Vytisk v2 = new Vytisk(123455,"2/2006");
v1.equals(v2); // vysledek je false, jelikoz: v1 = this, v2 = object a telo metody equals obsahuje return this == object, coz je porovnavani adres instacni.

Proto je nutne provest nasledujici reimplementaci:

public boolean equals(Object object) {
   if (object == null) {
      return false;
   }
   if (object instanceof Vytisk) {
       Vytisk pomV = (Vytisk)object)
       return this.id ==  pomV && prirustek.equals(pomV.prirustek);
   }
   return false;
}

Samotna implementace hashcode sice neni zivotne nutna, ale je s ruznych duvodu, ktere si jiz nepamatuji doporucena.

Lumi(r)

Kamzik-II wrote:
No tak to mi potom neni vubec jasne, proc
bych to mel reimplementovat


----- Original Message ----- From: "Lumír Návrat" <[EMAIL PROTECTED]>
To: "Java" <konference@java.cz>
Sent: Wednesday, July 26, 2006 9:14 PM
Subject: Re: java.security.Permission


Nazdar,

strucne co si pamatuji z knizky 57 rad efektivne v JAVe (nebo obdobne) od Blochua, tak to vychazi ze zakladu jedinecnosti objektu a zpusobu jeho porovnavani ve virtualnim stroji. Tyto metody se dedi primo z tridy Object a maji je implementovane vsechny tridy. pravidlo je takove, ze equals zajistuje shodu na urovni aplikace a hashcode na urovni VM => v ruznych instancich VM hashcode myslim muze byt ruzny, zatimco equals je vzdy stejne, ale nejsem si tim ted jisty:(

Plati vsak, pokud se reimplementuje equals, tak se musi reimplementovat i hashcode

Lumi(r)

Kamzik-II wrote:
Dobry vecer,
prokousavam se bezpecnosti v Jave
a narazil jsem na tridu Permission.
Rad bych si napsal svou vlastni implementaci,
ale trochu me desi nektere metody, oznacene, jako
abstraktni, napriklad mi neni jasne, proc by mel
Permission objekt povinne reimplementovat metodu hashcode a equals, to equals bych mozna jeste pochopil,
ale hashcode mi prijde jako uplna blbost.







Odpovedet emailem