使某些用户输入不是强制/默认值

时间:2017-11-09 10:47:39

标签: java

我有一个build()方法,可以根据用户的输入创建一个Booking。目前,必须添加每个变量。如何使某些变量不是强制性的?即接受一个空白值?

public static Booking build() throws BuilderException {
    if (date == null)
        throw new BuilderException("Valid date not found");

    if (hours < MINHOURS)
        throw new BuilderException("Minimum hours for booking is " + MINHOURS);

    if (attendance < MINATT)
        throw new BuilderException("Minimum headcount is " + MINATT);

    if (location == null)
        throw new BuilderException("Valid location not found");

    if (building == null)
        throw new BuilderException("Valid building not found");

    if (emailAddress == null)
        throw new BuilderException("Valid email address not found");

    if (contactNumber == null)
        throw new BuilderException("Valid contact number not found");

    return new Booking(date, hours, attendance, location, building, emailAddress, contactNumber);
}

所以例如我想保持contactNumber必须,但如果位置/建筑物留空,那就没关系。感谢

2 个答案:

答案 0 :(得分:0)

例如,假设我们有一个包含2个参数的方法:xyx是必需的,y是可选的。

然后我们可以写:

int myMethod(int x, int y){
    // ... code
}

int myMethod(int x){
    int defaultY = 5; // for example 5
    return myMethod(x, defaultY);
}

现在,您可以使用y来调用myMethodmyMethod(1, 2);

但你也可以没有: myMethod(1);。它将起作用:myMethod(1, 5);

答案 1 :(得分:0)

您可以简单地删除带有空检查的行,以查找要使其成为可选参数的行。然后它们将为null,并且null将被传递给构造函数。好吧,除非在构造函数代码中还有一些东西阻止使用空值,否则这将有效。