【问题标题】:Effective java Item no 5 example code second edition有效java第5项示例代码第二版
【发布时间】: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;

}
}
  1. 程序何时以及如何获取生日实例?
  2. 他们是否省略了该实例的编码过程?
  3. 出于什么目的,他们将结果与 return 中的零(>= 和
  4. 我们不能在不使用零整数的情况下使用简单返回吗(布尔值仅用于测试)?

【问题讨论】:

  • 本书假设您可以自己解决这些问题,所以我建议您尝试这样做。您可以在没有任何额外信息的情况下回答这些问题,这里没有技巧。
  • 一个更棘手的问题是;为boomStart 提出不同的日期,并说明为什么这可能比使用 1 月 1 日更好。
  • 谢谢彼得,我们可以把return写成returnbirthDate.compareTo(boomStart) &&birthDate.compareTo(boomEnd);在不知道如何设置生日的情况下,我很难测试(编译)。任何人都可以通过编写完整的代码来获得birthDate 谢谢
  • 请参阅 this question,了解有关 compareTo() API 的讨论。

标签: java object effective-java


【解决方案1】:
  1. 鉴于birthDate 是最终的,我会说它是通过构造函数传递给类的,

  2. 在书籍和其他辅导材料中,通常的做法是省略与给定示例无关的代码,以避免给读者造成额外的误解

  3. 方法compareTo 返回int,因此如果要将其转换为布尔结果,则必须使用运算符==, !=, &lt;, &gt;, &lt;=, &gt;=之一将其与某个数字进行比较

  4. 你想如何使用简单的返回?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多