[解決済み】Java 8のゲッターはオプションの型を返すべきですか?
質問
Optional
Java 8で導入されたtypeは、多くの開発者にとって新しいものです。
を返すゲッターメソッドですか?
Optional<Foo>
型の代わりに
Foo
は良い習慣ですか?値が可能であると仮定します。
null
.
解決方法は?
もちろん、人々は自分の好きなようにするでしょう。 しかし、私たちはこの機能を追加する際に、明確な意図を持っていました。
ではなく
多くの人がそうして欲しいと思うほど、汎用のMaybe型にすることです。 私たちの意図は、ライブラリ メソッドの戻り値の型に限定したメカニズムを提供することで、「結果なし」を表す明確な方法が必要なときに
null
というのは、圧倒的にエラーの可能性が高かったからです。
例えば、結果の配列やリストを返すようなものには、おそらく決して使用しないでください。 また、何かのフィールドやメソッドのパラメータとして使うこともほとんどないでしょう。
ゲッターの戻り値として日常的に使うのは、間違いなく使いすぎだと思います。
何もない いけない オプティカルは避けるべきですが、多くの人がそうであってほしいと願っているわけではありません。
(公共サービスのお知らせです。
ネバー
コール
Optional.get
のような安全なメソッドを使用します。
orElse
または
ifPresent
. 今にして思えば、私たちは
get
のようなものです。
getOrElseThrowNoSuchElementException
の目的を根底から覆す非常に危険な方法であることを、もっと明確にする必要があります。
Optional
ということです。 教訓です。 (UPDATE: Java 10では
Optional.orElseThrow()
と意味的に同じです。
get()
しかし、その名前はより適切である)) 。
関連
-
[解決済み] 最も近い整数への切り捨て - 私は不正をしているのでしょうか、それともこれは十分すぎるほど適切なのでしょうか?
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] 特定のUnicode文字を含むコメントでのJavaコードの実行が許可されているのはなぜですか?
-
[解決済み] Java のメソッド名を文字列で指定した場合、どのように呼び出すのですか?
-
[解決済み] なぜJava 8のOptionalは引数で使ってはいけないのか
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] enumのordinalを使用するのは良い習慣ですか?
-
[解決済み] パラメータ[変数]の不正な修飾子;finalのみが許可される[closed]。
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] 文字列の長さに応じて文字列をトリミングする
-
[解決済み] Spring ApplicationContext - リソースリーク: 'context' が閉じられない
-
[解決済み] なぜJava 8のOptionalは引数で使ってはいけないのか
-
[解決済み】オプショナルの使用方法