-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCacheImmutableTest.java
More file actions
46 lines (44 loc) · 1.27 KB
/
CacheImmutableTest.java
File metadata and controls
46 lines (44 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// 缓存实例的不可变类
package code;
class Name{
private static final int MAX_SIZE = 5;
private static int NUM;
private static Name[] cache = new Name[MAX_SIZE];
private final String name;
private Name(String name){
this.name = name;
};
public static Name createName(String name){
for(int i=0;i<NUM;i++){
if(Name.cache[i]!=null&&Name.cache[i].name.equals(name)){
return Name.cache[i];
}
}
if(NUM<MAX_SIZE){
Name name_ = new Name(name);
Name.cache[NUM++] = name_;
return name_;
}
else{
Name name_ = new Name(name);
cache[0] = name_;
return name_;
}
}
}
public class CacheImmutableTest{
public static void main(String[] args) {
Name a = Name.createName("a");
Name b = Name.createName("b");
Name c = Name.createName("c");
Name d = Name.createName("d");
Name e = Name.createName("e");
Name f = Name.createName("f");
Name g = Name.createName("a");
System.out.println(a==g);
Name h = Name.createName("b");
System.out.println(b==h);
Name i = Name.createName("c");
System.out.println(c==i);
}
}