object.getProperty().getSubProperty().getSubSubProperty();
Come codificare una coalesce intelligente in Java?
Prendere in considerazione il codice sopra. Un oggetto ha una proprietà, che ha una subProperty, che ha una subSubProperty, a cui è possibile accedere con i metodi getter.
Cosa possiamo fare in Java per realizzare qualcosa di simile:
Util.coalesce(object.getProperty().getSubProperty().getSubSubProperty(), defaultSubSubProperty);
org.apache.commons.lang3.ObjectUtils.defaultIfNull
ha qualcosa di simile. Ma il problema con questo metodo è che funziona solo quando proprietà e subProperty non sono nulle. Vorrei un modo per ottenere subSubProperty o defaultSubSubProperty anche quando la proprietà e subProperty sono nulle.
Come possiamo fare questo?
Wonderfull. Ma ho ancora un problema. Qui, la produzione Java è Java 7, possiamo usarla in Java 7 usando un jar o qualcosa del genere? – GarouDan
@GarouDan in teoria, ci sono backport della libreria ma non ne ho usato nessuno. Senza lo zucchero sintattico immagino che usare una libreria sia più doloroso che scriverlo da solo. –
@GarouDan Puoi ancora usare Guava ['Optional'] (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Optional.html) (' ofNullable' -> 'fromNullable',' map' -> 'transform'), ma dovrai espandere tutti i riferimenti dei metodi alle sottoclassi anonime, il che renderà il tuo codice orribilmente grande. –