Uproszczenie za pomocą wyrażenia lambda

Uproszczenie za pomocą wyrażenia lambda
WA
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 5 lat
  • 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;

edytowany 1x, ostatnio: Warmix
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
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.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 1x, ostatnio: jarekr000000
TY
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 lata
  • 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...

edytowany 4x, ostatnio: Tyvrel
PU
  • Rejestracja:ponad 9 lat
  • Ostatnio:5 miesięcy
  • 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.