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