一、错误做法
//不要这么做,每次isBabyBoomer被调用,都会新建一个Calendar和TimeZone两个实例
public boolean isBabyBoomer(){
Calendar gmtCal = 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;
// }
二、正确做法
private final Date birthDate = null;
private static Date BOOM_START = null;
private static Date BOOM_END = null;
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();
}
/**
* 避免创建不必要的对象
* @return
*/
public boolean isBabyBoomer(){
return birthDate.compareTo(BOOM_START) >= 0 &&
birthDate.compareTo(BOOM_END) < 0;
}
网友评论