(Javaの8の少なくとも)これを実行することが可能である理由私は好奇心旺盛です。
Optional.of(null).orElse("something");
Optional.of(null)
基本的には保証NULLポインタです。呼び出すことが可能となる.orElse()
ことには不器用な開発者の予期しない穴がに陥るできます。私はこれまで任意の正当性があるかどうかを確認するために周りを探してきました。多分これは、アドレスになっていることをいくつかのシナリオがありますか?
あなたが書くことができます同じ理由でこれを行うことができます((String) null).length()
。Javaコンパイラは、型の安全性のような特定の物事の静的チェッカーを持っていますが、ために確認するか、証明可能投げるコードを拒否していませんNullPointerException
。それがなかった場合は、コードがthrow new NullPointerException();
どちらかの許可されません。
これは、例外をスローするコードが間違いであることを一般的にそうではないのです。静的チェッカは、この種のものを検出し、それについて警告することもできますが、これは誤りだった場合、それは悪いだろう。いくつかのIDEには、可能性の-ミスについて、独自の警告を生成しますが、あなたはあるかをチェックする価値がないかを決定しなければなりません。
この可能性-ミスを検出することの行動の知識を持って設計された静的チェッカー必要とOptional.of
する方法を。著者Java言語仕様は、安全でないキャストのようなもののために警告する決定をしたではなく、何のためのメソッドのセマンティクスに依存するが使用されています。この決定の利点の一つは、それがJLSは別に維持できることを意味していることであるJavaのクラスライブラリのドキュメント。