object.getProperty().getSubProperty().getSubSubProperty();
如何在Java中編寫智能合併?
考慮上面的代碼。一個對象具有一個屬性,該屬性具有一個subProperty,它具有一個subSubProperty,可以使用getter方法訪問該屬性。
我們可以做在Java中怎麼實現這樣的:
Util.coalesce(object.getProperty().getSubProperty().getSubSubProperty(), defaultSubSubProperty);
org.apache.commons.lang3.ObjectUtils.defaultIfNull
有這樣的事情。但是這個方法的問題在於,當property和subProperty不爲null時它就會工作。即使在property和subProperty爲null的情況下,我也希望獲得subSubProperty或defaultSubSubProperty。
我們該怎麼做?
完美的事情。但我仍然有問題。在這裏,生產Java是Java 7,我們可以使用jar或類似的東西在Java 7中使用它嗎? – GarouDan
@GarouDan在理論上有圖書館的backports,但我沒有用過。如果沒有語法糖,我想用圖書館比自己寫書更痛苦。 –
@GarouDan您仍然可以使用Guava的['Optional'](http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Optional.html)('ofNullable' - > 'fromNullable','map' - >'transform'),但是你必須將所有的方法引用擴展到匿名子類,這會使你的代碼非常大。 –