22
我有一個叫Address
類,它看起來是這樣的:可選在龍目島
@Value
class Address {
@NotNull String userId;
@NotNull String line1;
String line2;
private Address(Builder b) {
// copy everything from builder
}
// override getter for line2 so that it returns Optional<String>
public Optional<String> getLine2() {
return Optional.fromNullable(this.line2);
}
// and a Builder
public static class Builder {
// builder methods
}
}
在這裏,我不得不寫Builder
和Getter
因爲,如果我想返回一個可選的同時使用龍目島,我將有宣佈line2
爲Optional<String>
。這將產生一個建造者的方法,接受Optional<String>
!
是否有使用龍目島與Optional
任何其他方式?
我真的很感謝你回答這個問題!謝謝! 我知道這種不使用'可選'作爲'null'替換的原理。如果在getter中使用''Optional',它將會過度使用。但是,Google Guava的開發人員還有另一種更方便的理念,它允許您使用Optional來替換null [Guava的可選](http://docs.guava-libraries.googlecode.com/git/javadoc/com/google /common/base/Optional.html) 所以,我個人認爲,'lombok' SHLD保持中立,並提供autoOptional支持,並留下是否使用它,或者不給程序員 –
我們總是可以增加新的功能,但我們確實試圖首先關注最重要的功能。這在我們看來不是其中之一。我們還沒有遇到過這種模式。 –
確實有在領域和getter有可選的參數。它可以成爲你使用null的很多地方的一個很好的替代品,但是並不試圖模仿isPresent的空檢查。 – ymajoros