【问题标题】:Simplify if statement: if (legendTitle != null && legendTitle.equals("My house")) [duplicate]简化 if 语句: if (legendTitle != null && legendTitle.equals("My house")) [重复]
【发布时间】:2020-11-17 17:10:53
【问题描述】:

我尝试提交我的代码,但 IntelliJ 中的代码分析显示:'if' 语句可以在这一行中简化:

if (legendTitle != null && legendTitle.equals("My house"))

legendTitle 是一个字符串,我写了legendTitle != null,因为空字符串中的.equals 是一个 NullPointerException

【问题讨论】:

  • 你可以更简单地这样做:if ("My house".equals(legendTitle))
  • 也就是说,我可能不会打扰 - 这条线路就这样很好。至少这样可以清楚地表明已经考虑了 null 案例。
  • 如果legendTitle 是某个方法调用的结果,您可以考虑将该方法调用的返回类型更改为Optional<String> 并使用适当的Optional 方法,但如果是这样的话本地,这可能是不必要的开销。
  • 你还想支持legendTitlenull 的情况吗?因为如果您认为这是代码中的错误,您实际上应该故意触发异常,快速失败。否则你不会注意到这个错误。但是,在那种情况下更喜欢Objects.requireNonNull(legendTitle);,更具表现力。

标签: java optimization intellij-14 code-cleanup


【解决方案1】:

你可以写if ("My house".equals(legendTitle))。 “我的房子”永远不能为空,所以在这种情况下你不会得到 NullPointerException。

【讨论】:

    【解决方案2】:

    您可以使用if (Objects.equals(legendTitle, "My house"))Objects 类将正确处理 null 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 2013-08-08
      • 2023-03-23
      相关资源
      最近更新 更多