এটি ব্যবহার করে সম্ভব sun.misc.Unsafe
: @ পিটার লরির এই দুর্দান্ত উত্তরটি দেখুন -> কোনও রেফারেন্স ঠিকানা পাওয়ার কোনও উপায় আছে কি?
মুদ্রণ ঠিকানাগুলির জন্য এর কোড ব্যবহার করে ():
public static void printAddresses(String label, Object... objects) {
System.out.print(label + ": 0x");
long last = 0;
int offset = unsafe.arrayBaseOffset(objects.getClass());
int scale = unsafe.arrayIndexScale(objects.getClass());
switch (scale) {
case 4:
long factor = is64bit ? 8 : 1;
final long i1 = (unsafe.getInt(objects, offset) & 0xFFFFFFFFL) * factor;
System.out.print(Long.toHexString(i1));
last = i1;
for (int i = 1; i < objects.length; i++) {
final long i2 = (unsafe.getInt(objects, offset + i * 4) & 0xFFFFFFFFL) * factor;
if (i2 > last)
System.out.print(", +" + Long.toHexString(i2 - last));
else
System.out.print(", -" + Long.toHexString( last - i2));
last = i2;
}
break;
case 8:
throw new AssertionError("Not supported");
}
System.out.println();
}
আমি এই পরীক্ষাটি সেট আপ করেছি:
//hashcode
System.out.println("Hashcode : "+myObject.hashCode());
System.out.println("Hashcode : "+System.identityHashCode(myObject));
System.out.println("Hashcode (HEX) : "+Integer.toHexString(myObject.hashCode()));
//toString
System.out.println("toString : "+String.valueOf(myObject));
printAddresses("Address", myObject);
এখানে ফলাফল:
Hashcode : 125665513
Hashcode : 125665513
Hashcode (HEX) : 77d80e9
toString : java.lang.Object@77d80e9
Address: 0x7aae62270
উপসংহার:
- হ্যাশকোড! = ঠিকানা
- টুস্ট্রিং = ক্লাস @ এইচএক্স (হ্যাশকোড)