文档章节

缓存实例的不可变类

杨润康Bla
 杨润康Bla
发布于 2016/05/18 18:04
字数 294
阅读 27
收藏 0
public class CacheImmutale {
//长度
private static int MAX_SIZE=10;
//使用数组缓存实例,最多能缓存10实例
private static CacheImmutale[] cache=new CacheImmutale[MAX_SIZE];
//记录缓存的位置
private static int pos=0;
//名称
private final String name;
public CacheImmutale(String name)
{
  this.name=name;
}
public String getName() {
return name;
}
public static CacheImmutale valueOf(String name)
{
//首先遍历数据中已经缓存的实例对象
for(int i=0;i
{
if(cache[i].getName().equals(name)){
//如果有,就return当前CacheImmutale对象,就不用重新new 了,节省系统资源
return cache[i]; 
}
}
//如果缓存实例的数组满了,就进行覆盖,将最新的实例放到数组的第一个位置,一边能起一个找到,提升系统性能
if(cache.length==MAX_SIZE){
cache[0]=new CacheImmutale(name);
    //设置一下位置 ,用作最后的return
pos=1;
}else{
//如果没满
cache[pos++]=new CacheImmutale(name);//cache[pos++] //弄完后再加加的
}
return cache[pos-1];
}
public boolean equals(Object obj){
if(this==obj)
{
return true;
}
if(obj!=null && obj.getClass()==CacheImmutale.class)
{
CacheImmutale cach=(CacheImmutale)obj;
return name.equals(cach.getName());
}
return false;
}
public static void main(String[] args) {
CacheImmutale cacheOne=new CacheImmutale("Test");
CacheImmutale cacheTwo=new CacheImmutale("Test");
//如果返回true,表明系统没有重新创建一个新的实例,而是用缓存中的实例
System.out.println(cacheOne.equals(cacheTwo));
}
}

本文转载自:http://blog.csdn.net/yangrunkangbla/article/details/45134283

共有 人打赏支持
杨润康Bla
粉丝 14
博文 76
码字总数 0
作品 0
合肥
后端工程师
JAVA中具有实例缓存的不可变类

不可变类的实例的状态不会变化,这样的实例可以安全的被其他与之关联的对象共享,还可以安全的被多个线程共享。 为了节省内存空间, 优化程序的性能, 应该尽可能的重用不可变类的实例,避免...

moz1q1
2014/11/03
0
0
Java中final修饰符

final关键字可用于修饰类、变量和方法表示不可见,final修饰变量时,表示该变量一旦获得了初始值就不可被改变。 1.final修饰的成员变量必须由程序员显示的指定初始化值,final修饰类变量:必...

西红柿的眼泪
2016/07/07
26
0
Effective Java 第三版——17. 最小化可变性

Tips 《Effective Java, Third Edition》一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8...

M104
01/08
0
0
Effective Java(1):静态工厂方法代替构造器

创建类的实例最常见的是new 除此外还可以使用静态工厂方法,来封装实例的细节,并且能控制实例的数量,减轻jvm的堆栈中的压力。静态工厂方法最主要的特点是:每次被调用的时候,不一定要创建...

_Roger_
2015/12/12
155
0
为什么Java要把字符串设计成不可变的

原文出处: Hollis(@HollisChuang) 是Java中一个不可变的类,所以他一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不能被修改。不可变类有很多优势。本文总结了为什...

刘星石
2016/03/08
5
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day58-20180816-流利阅读笔记-待学习

苹果市值破万亿,iPhone 会涨价吗? Lala 2018-08-16 1.今日导读 苹果教父乔布斯曾经说过:“活着就是为了改变世界。”虽然他在 56 岁时就遗憾离世,但他极具创新和变革的精神早已深埋进苹果...

aibinxiao
27分钟前
4
0
[雪峰磁针石博客]python3快速入门教程1 turtle绘图-2函数

菲波那契序列: >>> # Fibonacci series:... # the sum of two elements defines the next... a, b = 0, 1>>> while b < 10:... print(b)... a, b = b, a+b...112......

python测试开发人工智能安全
今天
0
0
java环境变量配置最正确的方式

原贴:https://blog.csdn.net/qq_40007997/article/details/79784711,十分详细,亲测有效

kitty1116
今天
0
0
49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
2
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部