【问题标题】:how to avoid multiple null checks, if need do something after the each check如何避免多次空检查,如果需要在每次检查后做一些事情
【发布时间】:2021-03-19 17:48:40
【问题描述】:

如果需要在每次检查后执行某些操作或如何最好地处理这些检查,如何避免多次空检查? java 8+

public void method(Object obj){
    if (Objects.nonNull(obj.getA())) {
        do something;
    }
    if (Objects.nonNull(obj.getB())) {
        do something;       
    }
    if (Objects.nonNull(obj.getC())) {
        do something;
    }
    do something;
}

【问题讨论】:

  • Java8 中除了空检查之外别无选择。你必须明确地做到这一点。无论如何obj.getA() != null 似乎比你上面使用的更简单和简洁。
  • 我看不出它的惯用语有什么问题,除了它不能编译。
  • 好吧,您可以使用某种形式的循环来检查元素,并使用 lambda 来处理那些为空的元素。这是否有意义取决于您的要求。您可以尝试的一件事(没有自定义方法)是这样的(概念上):Arrays.asList(obj.getA(), obj.getB(), ...).stream().filter(e -> e == null).foreach(e -> /*do something*/).
  • @Thomas 请不要... :) 流不是答案。那里没有任何功能原因创建了许多无用的对象。如果是的话,你应该使用 Objects::nonNull 作为谓词,而不是创建一个新的 lambda。
  • @Thomas 而不是Arrays.asList(obj.getA(), obj.getB(), ...).stream() 你可以写Stream.of(obj.getA(), obj.getB(), ...)

标签: java if-statement java-8 null notnull


【解决方案1】:

我对您的查询不是很清楚,但您可以使用 Java8 中的 Optional 类进行空值检查。

    dataType value=(dataType) Optional.of(obj).orElse(put some value);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2017-09-06
    • 2018-09-13
    • 2011-05-24
    • 1970-01-01
    相关资源
    最近更新 更多