java - Java 构造函数空对象
问题描述
我第一次在这里问,如果问得不好,很抱歉
public class Person
{
private String name;
private Date born;
private Date died; //null indicates still alive.
public Person(String initialName, Date birthDate, Date deathDate)
{
if (consistent(birthDate, deathDate))
{
name = initialName;
born = new Date(birthDate);
if (deathDate == null)
{
died = null;
}
else
{
died = new Date(deathDate);
}
}
else
{
System.out.println("Inconsistent dates.Aborting.");
System.exit(0);
}
}
}
我的书中有这段代码。它只是代码的一部分,它不是完整的代码。我只复制了我所询问的部分。我的问题是。我们不能只删除if (deathDate == null)
. 如果是null
,那么无论如何died
都会null
?
解决方案
继续阅读。有一个else
说法。您的建议是替换它:
if (deathDate == null) died = null;
else died = new Date(deathDate);
和:
died = new Date(deathDate);
这是行不通的;这将归结为new Date(null)
将引发 NullPointerException。
注意:这是疯狂的代码。当先决条件失败(日期不一致)时,您将引发异常。您不会将某些内容打印到标准错误并退出整个 VM。将最后两行替换为throw new IllegalArgumentException("Death date cannot be before birth date. Death: " + death + " birth: " +birth);
.
推荐阅读
- sailpoint - 如何从 Sailpoint 中清除所有标识?
- python - 如何将 if 条件的结果添加为 pandas 数据框中的列?
- ios - 使用多个视图控制器堆栈处理方向
- php - 如何从选项中获取输入,而我必须将数据输入到同一数据库的两个表中,基于选项数据将被插入
- php - 注意:未定义的偏移量:嵌套数组上的 0
- java - 如何在二维数组上使用比较器对用户输入进行排序
- roku - Roku 中的 roRegistrySection 问题?
- java - Kotlin 的主要构造函数的参数是完全私有的还是仅适用于 Java 代码?
- java - 在wiremock中使用ResponseTransformer总是得到空响应
- google-bigquery - 没有足够的资源用于查询计划