java的缓存实例的不可变类
2017-07-14 17:23
405 查看
/**
不可变实例的实例状态不可改变,可以方便被多个对象共享
*/
class cacheimmutale
{
private static int MAX_SIZE=10;
private static cacheimmutale[] cache=new cacheimmutale[MAX_SIZE];//用数组来缓存已有的实例
private static int pos=0;//‘记录缓存实例在缓存中的位置,cache【pos-1】是最新缓存的实例
private final String name;
private cacheimmutale(String name)
{
this.name=name;
}
public String getname()
{
return name;
}
public static cacheimmutale 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 cacheimmutale(name);//把缓存的第一个对象覆盖,即把刚刚生成的对象放在缓存池的最开始位置
pos=1;
}
else cache[pos++]=new cacheimmutale(name);//把新创建的对象缓存起来,pos+1
return cache[pos-1];
}
public boolean equals(Object obj)
{
if (this == obj) //两个对象为同一个对象
return true;
if(obj != null && obj.getClass()==cacheimmutale.class)//只有当obj是cacheimmutale对象
{
cacheimmutale ci=(cacheimmutale)obj;
return name.equals(ci.getname());//判断当前对象的name是否ci的name相等
}
return false;
}
public int hashcode()
{
return name.hashCode();
}
}
public class test6$4$7 {
public static void main(String[] args)
{
cacheimmutale c1=cacheimmutale.valueof("hello");
cacheimmutale c2=cacheimmutale.valueof("hello");
System.out.println(c1==c2);
}
}
不可变实例的实例状态不可改变,可以方便被多个对象共享
*/
class cacheimmutale
{
private static int MAX_SIZE=10;
private static cacheimmutale[] cache=new cacheimmutale[MAX_SIZE];//用数组来缓存已有的实例
private static int pos=0;//‘记录缓存实例在缓存中的位置,cache【pos-1】是最新缓存的实例
private final String name;
private cacheimmutale(String name)
{
this.name=name;
}
public String getname()
{
return name;
}
public static cacheimmutale 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 cacheimmutale(name);//把缓存的第一个对象覆盖,即把刚刚生成的对象放在缓存池的最开始位置
pos=1;
}
else cache[pos++]=new cacheimmutale(name);//把新创建的对象缓存起来,pos+1
return cache[pos-1];
}
public boolean equals(Object obj)
{
if (this == obj) //两个对象为同一个对象
return true;
if(obj != null && obj.getClass()==cacheimmutale.class)//只有当obj是cacheimmutale对象
{
cacheimmutale ci=(cacheimmutale)obj;
return name.equals(ci.getname());//判断当前对象的name是否ci的name相等
}
return false;
}
public int hashcode()
{
return name.hashCode();
}
}
public class test6$4$7 {
public static void main(String[] args)
{
cacheimmutale c1=cacheimmutale.valueof("hello");
cacheimmutale c2=cacheimmutale.valueof("hello");
System.out.println(c1==c2);
}
}
相关文章推荐
- JAVA中具有实例缓存的不可变类
- JAVA中具有实例缓存的不可变
- java一个实现实例缓存的不可变类
- 52 Java final 缓存实例的不可变类
- Java_final关键字,不可变类,缓存不可变类实例(缓存池技术)
- 缓存不可变类实例的不可变类【参考疯狂Java讲义】
- java_数组作缓存池的不可变类实例
- Java_final关键字,不可变类,缓存不可变类实例(缓存池技术)
- JAVA中具有实例缓存的不可变类
- java 缓存实例的不可变类 p186
- java 不可变类 缓存实例
- java 不可变类 缓存实例
- java 不可变类 缓存实例
- Map实现java缓存机制的简单实例
- Java缓存Ehcache-核心类和方法介绍及代码实例
- java内存优化实例----缓存Bitmap
- 《疯狂JAVA讲义》缓存实例的不可变类
- javaweb之response随机生成图片验证码加载到web页面中(本实例使用了禁止浏览器缓存头),并且单击使用javascript换图片
- java通过暴力反射创建不可实例化类的对象实例
- 缓存实例的不可变类