对象初始化的优化代码(来自Effective Java中文第二版)
实现的目标,其中有一个人模型,并有一个isBabyBoomer方法,用来检验这个人是否为一个"baby boomer(生育高峰期出生的小孩)",换句话说,就是检验这个人是否出生于1946年至1964年期间。
优化前
public class Person{
private fina Date birthDate;
public boolean isBabyBoomer(){
Calendar gmtCa1 = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
gmtCal.set(1946,Calendar.JANUARY,1,0,0,0);
Date boomStart = gmtCal.getTime();
gmtCal.set(1965,,Calendar.JANUARY,1,0,0,0)
Date boomEnd = gmtCal.getTime();
return birthDate.compareTo(boomStart)>=0 && birthDate.compareTo(boomEnd)<0;
}
}
优化后
class Person{
private final Date birthDate;
private static final Date BOOM_START;
private static final Date BOOM_END;
static{
Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
gmtCal.set(1946,Calendar.JANUARY,1,0,0,0);
BOOM_START = gmtCal.getTime();
gmtCal.set(1965,,Calendar.JANUARY,1,0,0,0)
BOOM_END = gmtCal.getTime();
}
public boolean isBabyBoomer(){
return birthDate.compareTo(BOOM_START)>=0 && birthDate.compareTo(BOOM_END)<0;
}
}