serah
serah

Reputation: 2117

rewrite if else null check using optionals

Is there a way to rewrite this using Optional and lambdas in a more succinct and clear way?

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

Upvotes: 2

Views: 351

Answers (4)

Eugene
Eugene

Reputation: 120848

!Optional.ofNullable(t)
         .map(AvgBuySellPriceTerm::getIndicator)
         .map(List::isEmpty)
         .orElse(true);

Not sure this is more readable though.

Upvotes: 1

il3v
il3v

Reputation: 512

Again, not using lambdas here but keeping it readable. The first if statement can be omitted, so it can all boil down to:

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

    return false;
}

Upvotes: 0

Yassin Hajaj
Yassin Hajaj

Reputation: 21975

The following should do it, using an Optional::ofNullable and the classic map, filter and isPresent methods

private boolean pricingIndicator(AvgBuySellPriceTerm avgBuySellPriceTerm){
    return Optional.ofNullable(avgBuySellPriceTerm)
                   .map(AvgBuySellPriceTerm::getIndicator)
                   .filter(ind -> !ind.isEmpty())
                   .isPresent();
}

Upvotes: 2

Eran
Eran

Reputation: 393811

Here's a suggestion with 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);
}

Upvotes: 2

Related Questions