Java 构造函数空对象

Java constructor empty object

第一次在这里提问,如有不妥请见谅

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。

注意:这是疯狂代码。当先决条件失败(不一致的日期)时,您将抛出异常。您不会将某些内容打印到标准错误并退出整个虚拟机。将最后两行替换为 throw new IllegalArgumentException("Death date cannot be before birth date. Death: " + death + " birth: " +birth);.

你不妨替换一下代码:

if (deathDate == null)
{
     died = null; 
}
else
{
     died = new Date(deathDate);
}

进入这个:

died = null;
if (deathDate != null)
{
    died = new Date(deathDate);
}