我有一个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必须,但如果位置/建筑物留空,那就没关系。感谢
答案 0 :(得分:0)
例如,假设我们有一个包含2个参数的方法:x
和y
。 x
是必需的,y
是可选的。
然后我们可以写:
int myMethod(int x, int y){
// ... code
}
int myMethod(int x){
int defaultY = 5; // for example 5
return myMethod(x, defaultY);
}
现在,您可以使用y来调用myMethod
:myMethod(1, 2);
但你也可以没有:
myMethod(1);
。它将起作用:myMethod(1, 5);
答案 1 :(得分:0)
您可以简单地删除带有空检查的行,以查找要使其成为可选参数的行。然后它们将为null,并且null将被传递给构造函数。好吧,除非在构造函数代码中还有一些东西阻止使用空值,否则这将有效。