class XObject{ public final static Map<Integer,XObject> map=Collections.synchronizedMap(new HashMap<Integer,XObject>()); ////它是一個Map,而且線程安全 public static XObject getObjectByRawHashCode(Integer hashCode){ return map.get(hashCode); }
/**hashCode()方法是Object類下面的一個方法,供繼承類重寫,根據對象內存地址計算哈希值 ,String類重寫了hashCode方法,並改成根據字符序列來計算哈希值,identityHashCode()方法是S ystem類中的靜態方法,根據對象內存地址來計算哈希值; **/ XObject(){ map.put(System.identityHashCode(this), this); } } public class MyHashCodeObject extends XObject{ private String name; public void setName(String s) { this.name=s; } public String getName() { return this.name; } public static void main(String[] args){ MyHashCodeObject my=new MyHashCodeObject(); my.setName("abc"); System.out.println("hashcode:"+my.hashCode()); MyHashCodeObject object=(MyHashCodeObject)XObject.getObjectByRawHashCode(my.hashCode()); ////經過hashcode從新獲得這個對象 System.out.println(object.getName()); }