Kaip koduoti intelektualų susiliejimą java?

object.getProperty().getSubProperty().getSubSubProperty();

Apsvarstykite aukščiau esantį kodą. Objektas turi nuosavybę, turinčią subProperty, kuris turi subSubProperty, kuris gali būti pasiekiamas naudojant getter metodus.

Ką mes galime padaryti „Java“, kad pasiektume kažką panašaus:

Util.coalesce(object.getProperty().getSubProperty().getSubSubProperty(), defaultSubSubProperty);

org.apache.commons.> turi kažką panašaus. Tačiau šio metodo problema yra ta, kad ji veikia tik tada, kai nuosavybė ir subprofesija yra nulinės. Norėčiau gauti „SubSubProperty“ arba „defaultSubSubProperty“, net jei nuosavybė ir sub-property yra nulinės.

Kaip tai padaryti?

5
24 апр. GarouDan nustatytas balandžio 24 d 2015-04-24 15:04 '15, 15:04 2015-04-24 15:04
ответ 1 atsakymas

Galite naudoti šią parinktį „Java 8“.

 String s = Optional.ofNullable(object) .map(Type::getProperty) .map(Type2::getSubProperty) .map(Type3::getSubSubProperty) .orElse(defaultValue); 

Taip pat galite naudoti „ orElseGet(Supplier) arba „ orElseThrow(Throwable)

10
24 апр. Peter Lawrey atsakymas, pateiktas balandžio 24 d 2015-04-24 15:06 '15, 15:06 2015-04-24 15:06