***
GuavaはGoogleが開発したオープンソースJAVAライブラリとして流行したのは、いくつかの理由があると思います. は開発者にJDK以外の便利な機能を提供することができ、開発者が自分の手書きが必要だったUtility機能 を便利に使用することができる.開発者は、JAVA自体の言語欠陥による である可能性があるが、悪いプログラミング習慣を捨てることを強制することができる.は、開発者に自分のプログラムモードとアーキテクチャを改善させる.この点はGuavaの例えばEventBus,Filter,Orderingなどの機能に反映される.
今日から自分が学んだGuavaの知識を整理してまとめます.
Optional
私はかつて1枚のドキュメントの総括プログラムの設計の10大生まれつきの欠陥を覚えていて、Nullの出現はその中の1つです.Google公式では、Nullは移動の混乱と未知のバグの最も主要なソースであり、nullは非常に曖昧な状況をもたらしやすいと考えています.例えば、Mapのgetメソッドがnullを返すと、Mapにこのkey値がないのか、key値があるのか、まったく分かりませんが、このkey値に対応するvalueは空です.これに対応するため、Google推奨プログラムではOptionalの最もNULLの代替品を使用しています.
次に、Optionalの簡単な使用例を見てみましょう.
Optionalの主旨はNullの代わりにNULL以外のObjectを使用し、isPresent法でこのObjectが持つ変化の対象が空かどうかを判断することである.
Optionalの構築方法 Optional.of(T) 非空の値をofに伝える方法を制定し、入力された値が空であれば、すぐに をエラーします. Optional.absent()は、空のオブジェクトを表すOptional を返します. Optiona.fromNullable(T)が入力したオブジェクトはNULLであっても非NULLであってもよく、isPresentにより代表オブジェクトが空であるか否かが判断される.
Optionalの一般的な方法 isPresent()は何度も言及していますが、ここでは はあまり言いません. T get()はエージェントオブジェクトを返し、戻り値が空であればIllegalStateExceptionのエラー であることに注意する. T or(T)はプロキシオブジェクトを返すが、プロキシオブジェクトが空の場合は を返す代わりにパラメータの値を用いる. T orNull()はプロキシオブジェクトを返しますが、プロキシオブジェクトが空の場合は を返す代わりにNULLを使用します. Set asSet()は、プロキシオブジェクトのみの可変の一例であるSet(Collections.singletonで作成)を返しますが、プロキシオブジェクトが空の場合は空のSet(Collections.emptySet()で作成された) を返します.
ここを見ると、Optionalもそんなに不思議ではないような気がします.簡単な包装で読むのが少し便利なようですが、実はこのような簡単な変更で、エージェントが空の場合、どのように処理すべきかを強制的に考えることができます.例を挙げると、T get().上位利用者が直接T.xxx()の方法でNullPointerExceptionを引き起こす可能性がある.しかし,我々が方法をOptional get()に再構成すると,上層利用者は自発的に判断する傾向にある.isPresent()の場合です.
その他の選択肢
もちろん、既存のインタフェースを変更すると大きな変更とリスクがあると思いますが、Guavaは便利な方法を提供しています. Objects.firstNonNull(T,T)は、NULLでない最初のオブジェクト を返します. Strings.emptyToNull(String)空の文字列をNULL に変更 Strings.NullToEmpty(String)NULLを空の文字列 に変更 Strings.isNullOrEmpty(String)この方法はよくありません.スペースしかない文字列を伝えるとfalse を返すからです.
今日から自分が学んだGuavaの知識を整理してまとめます.
Optional
私はかつて1枚のドキュメントの総括プログラムの設計の10大生まれつきの欠陥を覚えていて、Nullの出現はその中の1つです.Google公式では、Nullは移動の混乱と未知のバグの最も主要なソースであり、nullは非常に曖昧な状況をもたらしやすいと考えています.例えば、Mapのgetメソッドがnullを返すと、Mapにこのkey値がないのか、key値があるのか、まったく分かりませんが、このkey値に対応するvalueは空です.これに対応するため、Google推奨プログラムではOptionalの最もNULLの代替品を使用しています.
次に、Optionalの簡単な使用例を見てみましょう.
Optional<Integer> possible = Optional.of(5);
possible.isPresent(); // returns true
possible.get(); // returns 5
Optionalの主旨はNullの代わりにNULL以外のObjectを使用し、isPresent法でこのObjectが持つ変化の対象が空かどうかを判断することである.
Optionalの構築方法
Optionalの一般的な方法
ここを見ると、Optionalもそんなに不思議ではないような気がします.簡単な包装で読むのが少し便利なようですが、実はこのような簡単な変更で、エージェントが空の場合、どのように処理すべきかを強制的に考えることができます.例を挙げると、T get().上位利用者が直接T.xxx()の方法でNullPointerExceptionを引き起こす可能性がある.しかし,我々が方法をOptional get()に再構成すると,上層利用者は自発的に判断する傾向にある.isPresent()の場合です.
その他の選択肢
もちろん、既存のインタフェースを変更すると大きな変更とリスクがあると思いますが、Guavaは便利な方法を提供しています.