Uproszczenie za pomocą wyrażenia lambda

Uproszczenie za pomocą wyrażenia lambda
WA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 56
0

Czy możliwe jest uproszczenie poniższego kodu za pomocą wyrażenia lambda?

Kopiuj

      PercentField pCtFactor = new PercentField();
      pCtFactor.setValue(new BigDecimal(1));
      PercentField ctFactorDefault = ctFactor.getValue() != null ? ctFactor : pCtFactor;

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
1

Tu trzeba najpierw poprawić klasę PercentField.
Widać, że to jakiś nonsens:

Kopiuj
PercentField pCtFactor = new PercentField();
      pCtFactor.setValue(new BigDecimal(1)

Pokaż definicję klasy.

TY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 204
0

Można tak:

Kopiuj
PercentField ctFactorDefault = Optional.of(ctFactor)
    .filter(percentField -> percentField.getValue() != null)
.orElseGet(() -> {
    PercentField pCtFactor = new PercentField();
    pCtFactor.setValue(new BigDecimal(1)); 
    return pCtFactor;
});

ale czy ja wiem, czy jest to uproszczenie...

PU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 59
0
Kopiuj
		final PercentField ctFactorDefault;
		if (ctFactor.getValue() != null) {
			ctFactorDefault = ctFactor.getValue();
		} else {
			PercentField pCtFactor = new PercentField();
		    pCtFactor.setValue(new BigDecimal(1));
			ctFactorDefault = pCtFactor;			
		}

Może tak? Ale tutaj lambdy nie ma :) najlepiej gdyby getValue() zwracało optionala.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.