Diky moc za uvedeny priklad. Vystupem u me je (Eclipse): 1580473: java.lang.obj...@42e816 - java.lang.obj...@42e816 1580473: (false) 4384790 - 4384790
pricemz je pro me prekvapujici ten (false) ve vypisu. Vzdy jsem si myslel ze porovnani objektu obj == clash je prave porovnani pres identityHashCode (coz jsem prave mylne pokladal za adresu instance na heapu). Njn, diky za informace a jdu to udelat pres tu WeakReference a porovnavat budu pres "==". Diky vsem. konference-boun...@java.cz napsal dne 29.06.2010 13:01:30: > Od: Tomáš Záluský <zalu...@centrum.cz> > Komu: Java <konference@java.cz> > Datum: 29.06.2010 13:01 > Předmět: Re: Porovnani objektu > Odeslal: konference-boun...@java.cz > > > >identityHashCode() vraci pro ruzne objekty ruzne hodnoty, ale pouze v > >danem okamziku. > > To právě popírá program, který jsem linkoval v minulém mailu: > > public class HashClash { > public static void main(String[] args) { > final Object obj = new Object(); > final int target = obj.hashCode(); > Object clash; > long ct = 0; > do { > clash = new Object(); > ++ct; > } while (clash.hashCode() != target && ct<10L*1000*1000*1000L); > if (clash.hashCode() == target) { > System.out.println(ct+": "+obj+" - "+clash); > System.out.printf("%d: (%b) %d - %d%n",ct, obj == > clash, System.identityHashCode(obj),System.identityHashCode(clash)); > } else { > System.out.println("No clashes found"); > } > } > } > > V okamžiku System.out.printf existují dva různé objekty, ale mají > stejný identityHashCode. Děje se mi tak v Eclipsu i na Sun JVM > C:javaworkspaceworkbin>java -version > java version "1.6.0_18" > Java(TM) SE Runtime Environment (build 1.6.0_18-b07) > Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing) > > >Pokud napr. vytvorim objekt, ulozim si jeho > >identityHashCode(), pak jej zahodim a vytvorim novy objekt, tento novy > >objekt muze mit stejny identityHashCode. > > Souhlas. > > TZ > > > ================================================ > ...with Ultimate flying is so easy... > http://www.frisbee.cz http://www.peaceegg.net > ================================================