[解決済み] findFirst()が最初に見つけた要素がNullの場合、なぜNullPointerExceptionを投げるのでしょうか?
2022-10-31 20:45:38
質問
なぜ
java.lang.NullPointerException
?
List<String> strings = new ArrayList<>();
strings.add(null);
strings.add("test");
String firstString = strings.stream()
.findFirst() // Exception thrown here
.orElse("StringWhenListIsEmpty");
//.orElse(null); // Changing the `orElse()` to avoid ambiguity
の最初の項目は
strings
は
null
であり、これは全く問題ない値である。さらに
findFirst()
は
オプションで
を返しますが、これは
findFirst()
を処理することができます。
null
s.
EDIT: 更新された
orElse()
をより曖昧にならないように更新しました。
どのように解決するのですか?
この原因は
Optional<T>
を返すことにあります。オプショナルには
null
. 基本的に、これは "it isn't there" と "it is there, but it is set to ... の状況を区別する方法を提供しません。
null
と設定されています。
そのため
ドキュメント
を明示的に禁止しています。
null
で選択された
findFirst()
:
投げます。
NullPointerException
- 選択された要素がnull
関連
-
Javaでよくある構文エラー
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
ブートレイヤーの初期化中にエラーが発生しました java.lang.module.FindException: モジュールが見つかりません
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
強制型変換について
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
コンストラクタDate()が未定義である問題
-
[解決済み] ストリームから条件に合う最初の要素を取得する
-
[解決済み] String.valueOf(null)がNullPointerExceptionをスローするのはなぜですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
配列定数は初期化子でのみ使用可能です。
-
FindBugの使用概要
-
Javaがテキストファイルを読み込む
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ