object.getProperty().getSubProperty().getSubSubProperty();
Jak kodować inteligentną koalescencję w Javie?
Należy uwzględnić powyższy kod. Obiekt ma właściwość, która ma właściwość subProperty, która ma subSubProperty, do której można uzyskać dostęp za pomocą metod getter.
Co możemy zrobić w Javie, aby osiągnąć coś takiego:
Util.coalesce(object.getProperty().getSubProperty().getSubSubProperty(), defaultSubSubProperty);
org.apache.commons.lang3.ObjectUtils.defaultIfNull
ma czegoś takiego. Ale problem z tą metodą polega na tym, że działa on tylko wtedy, gdy właściwość i pod-właściwość nie są zerowe. Chciałbym uzyskać subSubProperty lub defaultSubSubProperty nawet wtedy, gdy właściwość i subProperty są puste.
Jak możemy to zrobić?
Wonderfull. Ale wciąż mam problem. Tutaj Java produkcyjna to Java 7, czy możemy jej użyć w Javie 7 przy użyciu słoika lub czegoś podobnego? – GarouDan
@GarouDan w teorii, istnieje backports biblioteki, ale nie użyłem żadnych. Bez cukru syntaktycznego wyobrażam sobie, że używanie biblioteki jest bardziej bolesne niż pisanie samemu. –
@GarouDan Nadal możesz używać Guawy ['Opcjonalne'] (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Optional.html) (' ofNullable' -> 'fromNullable',' map' -> 'transform'), ale będziesz musiał rozwinąć wszystkie odwołania do metod do anonimowych podklas, co uczyni twój kod okropnie dużym. –