返品時に@NonNull
注釈を追加する理由Optional
?この記事に基づいて@ NonNullでOptionalを返す関数に注釈を付ける?
public Optional<Integer> getInt() {
return Optional.ofNullable(localInteger);
}
対
@NonNull
public Optional<Integer> getInt() {
return Optional.ofNullable(localInteger);
}
:その記事とOptional
のhttp://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html 私の理解では、Optional
の全体のポイントがしようとすると、コードにnull
をチェックしてたときにということを防止することであるということです関数はnull
を返します。かどうかを呼び出し元に確認させるには、代わりにOptional
を返します。
私はので、ここで説明Optional<Map>
に問題があることを学びました:https://developer.atlassian.com/blog/2015/08/optional-broken
だから、オプションのため@NonNull
を追加する地図の種類を返すときに、発信者に余分な明確さを追加するようだが返すすべての機能に必要な、この明快です任意のOptional
タイプですか?
public Optional<Integer> getInt() {
return null;
}
は
@NonNull
public Integer getInt() {
return null;
}
と同じくらい悪いです私は戻り値の型がOptional
あるとき、それはnull
を返すことを悪い習慣であることを考えで正しいですか? (上記の地図の場合またはnull
が有効である場合がありますので、あなたが常に@NonNull
を追加する必要があります除く?)
結論 私の結論は、これまでOptional
を返すとき@NonNull
を追加しないことですし、それができるならばnull
@Nullable
以上の注釈を付けるには、Optional
タイプを返さないでください。
"空"を返すのではなく、nullを返すのが正しいかどうかを説明できますか? –
'Optional'を返すと約束しても、' null'を返すと契約が破られます。単に 'null'を返さないで、' Optional.empty() 'を返してください。追加の注釈は必要ありません。 – dehasi
@DaleWilsonの詳細については、developer.atlassianのリンクを参照してください。 –