переписать, если еще ноль проверить с помощью опций - PullRequest
2 голосов
/ 18 марта 2019

Есть ли способ переписать это, используя Optional и lambdas более кратким и ясным способом?

private boolean pricingIndicator(AvgBuySellPriceTerm avgBuySellPriceTerm){
    if(avgBuySellPriceTerm == null){
        return false;
    }else{
        if(avgBuySellPriceTerm.getIndicator()!= null && ! avgBuySellPriceTerm.getIndicator().isEmpty()){
            return true;
        }else{
            return false;
        }
    }
}

Ответы [ 4 ]

2 голосов
/ 18 марта 2019

Следующее должно сделать это, используя Optional::ofNullable и классические map, filter и isPresent методы

private boolean pricingIndicator(AvgBuySellPriceTerm avgBuySellPriceTerm){
    return Optional.ofNullable(avgBuySellPriceTerm)
                   .map(AvgBuySellPriceTerm::getIndicator)
                   .filter(ind -> !ind.isEmpty())
                   .isPresent();
}
2 голосов
/ 18 марта 2019

Вот предложение с Optional:

private boolean pricingIndicator(AvgBuySellPriceTerm avgBuySellPriceTerm){
    return Optional.ofNullable(avgBuySellPriceTerm)
                   .map(AvgBuySellPriceTerm::getIndicator)
                   .map(i -> !i.isEmpty()) // return true if getIndicator
                                           // is not empty
                   .orElse(false);
}
1 голос
/ 18 марта 2019
!Optional.ofNullable(t)
         .map(AvgBuySellPriceTerm::getIndicator)
         .map(List::isEmpty)
         .orElse(true);

Не уверен, что это более читабельно, хотя.

0 голосов
/ 18 марта 2019

Опять же, я не использую здесь лямбды, но оставляю их читабельными. Первый оператор if можно опустить, поэтому он может сводиться к следующему:

private boolean pricingIndicator(AvgBuySellPriceTerm avgBuySellPriceTerm){
    if(avgBuySellPriceTerm != null && avgBuySellPriceTerm.getIndicator()!= null && !avgBuySellPriceTerm.getIndicator().isEmpty()){
        return true;
    }

    return false;
}
...