简介:
虽然使用Java 8的Optional似乎很直观作为处理可选或可为空参数的方法参数,它通常被认为是次优实践。本文探讨了此建议的原因。
可选参数的陷阱:
1。代码复杂度:
在参数中使用可选会在方法中引入条件逻辑。每个可选参数都需要检查是否无效或存在,从而导致额外的分支和代码复杂性。
2.编译器效率低下:
Options 表示可空对象的包装器,会产生不必要的开销,并且在编译方面的成本超过可空参数。
3.可选可为空性:
与可空参数(显式指示空值的可能性)不同,可选值本身可以为空。如果无意中传递了 null 可选值,这种不一致可能会导致错误。
4.冗余:
可选的返回类型已经传达了可能缺少值的情况。在方法参数中重复此信息是多余的,并且可能会降低代码的可读性。
替代选项:
不要在参数中使用可选,请考虑以下替代方案:
1。可空参数:
将参数声明为可空(例如,使用 String p1、BigDecimal p2)并在方法内显式执行空检查。这比使用Optional更清晰、更高效。
2.方法重载:
为不同的参数组合创建单独的方法重载(例如,calculateSomething()、calculateSomething(String)、calculateSomething(BigDecimal)、calculateSomething(String, BigDecimal))。这提供了更直观和灵活的界面。
示例:
考虑问题中提供的示例代码。使用可空参数和显式空检查,调用代码将简化为:
String p1 = otherObject.getP1().orElse(null); BigDecimal p2 = otherObject.getP2().orElse(null); int result = myObject.calculateSomething(p1, p2);
结论:
虽然Optional提供了一种方便的方法来处理可空值作为返回类型,将其用作方法参数会带来复杂性、低效率和冗余。采用可为空参数或方法重载为处理可选或可为空输入参数提供了更清晰、高效且可维护的方法。
以上是我应该在 Java 中使用可选作为方法参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!