package Test; public class CacheImmutable { private static int MAX_size= 10; private static CacheImmutable[] cache =new CacheImmutable[MAX_size]; private static int pos =0; private final String name; public CacheImmutable(String name){ this.name=name; } public String getName(){ return name; } public static CacheImmutable valueOf(String name){ //遍历已缓存的对象 for(int i=0;i<MAX_size;i++){ if (cache[i]!=null&&cache[i].getName().equals(name)) { return cache[i]; } } //如果缓存池已满 if (pos ==MAX_size){ cache[0]=new CacheImmutable(name); pos=1; } else { //把新创建的对象缓存起来 cache[pos++] =new CacheImmutable(name); } return cache[pos -1]; } // @Override public boolean equals(Object obj) { if (this == obj){ return true; } if (obj!=null&&obj.getClass()==CacheImmutable.class){ CacheImmutable ci=(CacheImmutable)obj; return name.equals(ci.getName()); } return false; } public int hashCode(){ return name.hashCode(); } public static void main(String[] args) { CacheImmutable c1= CacheImmutable.valueOf("hello"); CacheImmutable c2= CacheImmutable.valueOf("hello"); //下面的代码将输出true System.out.println(c1==c2); } }
缓存实例
最新推荐文章于 2019-01-15 13:06:06 发布