CriteriaTO.java
public class CriteriaTO {
private Integer id;
private String name;
private String enName;
public void setId(Integer id){
this.id = id;
}
public Integer getId(){
return id;
}
...
public int hashCode() {
int[] hashCodes=new int[3];
hashCodes[0]=((id== null) ? 0 : id.hashCode());
hashCodes[1]=((name== null) ? 0 : name.hashCode());
hashCodes[2]=((enName== null) ? 0 :enName.hashCode());---------------------------1
}
}
假设传递一个类CriteriaTO到缓存CacheManager:
CriteriaTO criteria1 = new CriteriaTO ()
criteria1.setId(1);
criteria1.setName("123");
criteria.1setEnName("456");
CriteriaTO criteria2 = new CriteriaTO ()
criteria2.setId(1);
criteria2.setName("123");
criteria2.setEnName("987");
CacheManager.get(CacheManager.CACHE_TEST, criteria1);-----------------------------------3
CacheManager.get(CacheManager.CACHE_TEST, criteria2);-----------------------------------4
如果不写语句1,则语句3、4得到的结果一样,因为criteria1与criteria2的hashcode是一样的,则会调用缓存,所以可以看出hashcode在向缓存传递的类中作用是区分不同的参数的