java之學習筆記--hashcode獲取對象

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());
	  }
相關文章
相關標籤/搜索