为什么在参数中不使用Java 8的Optional
我已经在许多网站上阅读了Optional应该仅用作返回类型,而不能在方法参数中使用。我正在努力找到一个合理的理由。例如,我有一段逻辑,其中包含2个可选参数。因此,我认为这样写我的方法签名是有意义的(解决方案1): public int calculateSomething(Optional<String> p1, Optional<BigDecimal> p2 { // my logic } 许多指定为Optional的网页不应用作方法参数。考虑到这一点,我可以使用以下方法签名并添加清晰的Javadoc注释以指定参数可以为null,希望以后的维护者将读取Javadoc,因此始终在使用参数之前进行null检查(解决方案2) : public int calculateSomething(String p1, BigDecimal p2) { // my logic } 另外,我可以用四个公共方法替换我的方法,以提供更好的接口,并使p1和p2更明显(解决方案3): public int calculateSomething() { calculateSomething(null, null); } public int calculateSomething(String p1) { calculateSomething(p1, null); } public int calculateSomething(BigDecimal p2) { calculateSomething(null, p2); } public …