【发布时间】:2016-03-07 09:34:11
【问题描述】:
public class Person
private final Date birthDate;
// others fields omitted
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 && //where is Birthdate instance
// to compare
birthDate.compareTo(boomEnd) < 0;
}
}
- 程序何时以及如何获取生日实例?
- 他们是否省略了该实例的编码过程?
- 出于什么目的,他们将结果与 return 中的零(>= 和
- 我们不能在不使用零整数的情况下使用简单返回吗(布尔值仅用于测试)?
【问题讨论】:
-
本书假设您可以自己解决这些问题,所以我建议您尝试这样做。您可以在没有任何额外信息的情况下回答这些问题,这里没有技巧。
-
一个更棘手的问题是;为
boomStart提出不同的日期,并说明为什么这可能比使用 1 月 1 日更好。 -
谢谢彼得,我们可以把return写成returnbirthDate.compareTo(boomStart) &&birthDate.compareTo(boomEnd);在不知道如何设置生日的情况下,我很难测试(编译)。任何人都可以通过编写完整的代码来获得birthDate 谢谢
-
请参阅 this question,了解有关
compareTo()API 的讨论。
标签: java object effective-java