Java可选检查输入参数

时间:2019-06-19 06:03:53

标签: java java-8 optional

我习惯用java样板检查输入参数,如方法顶部所示:

value={single.id.toString()}

但是,我正在阅读Java 8的可选参数,并注意到我们可以改为执行以下操作:

public static Boolean filesExist(String file1, String file2, String file3 ... ) {
    if (file1 == null || file2 == null || file3 == null ||...) {
        throw new IllegalArgumentException();
    }
    if (another_param == null) {
        throw new NullPointerException();
    }
}

所以我的问题是第二种方法是否有不利之处,我觉得它对我来说看起来更干净。

3 个答案:

答案 0 :(得分:9)

要进行输入验证,请改用Objects.requireNonNull

public static Boolean filesExist(String file1, String file2, String file3 ... ) {
    Objects.requireNonNull(file1);
    Objects.requireNonNull(file2, "custom message");   
}

它更简洁,更清楚地传达意图,并且不会创建其他Optional对象。不过,它会抛出NullPointerException

答案 1 :(得分:1)

这样做是没有弊端的,代码可以正常工作,但是引入Optional是为了达到不同的目的。例如,您可以在接口的方法签名中使用Optional,以便清楚地传达您的信息。向客户表明您的方法返回的值是“可选”。这样,您的客户就不必进行猜测工作。

答案 2 :(得分:0)

不,采用第二种方法没有不利之处。两者都做相同的事情,但方式不同。 Optional是Java 8中新增的一项新功能。