2016-08-02 11 views
23

を確認してください。なし「Optional.get()」「isPresentは()」私はJavaで次の検索コードを持って

return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get(); 

私は名前で列を検索し、最初に見つかったものを返すように願いました。

何も見つからず、処理する必要がある場合がありますが、どうすればよいですか?

は、この宣誓で何を望んでいるか、このです:

'Optional.get()' without 'isPresent()' check 

修正方法?何も見つからない場合はnullを返信します。

UPDATE

大丈夫、大丈夫、私はちょうど、そのfindFirst()戻りOptionalを実現していませんでした。

+0

Javaの識別子として '$'を使用しないでください:[JLS Sec 3.8](https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html) #jls-3.8): "$記号は、機械的に生成されたソースコードでのみ使用するか、レガシーシステム上の既存の名前にアクセスすることはめったにありません。 –

答えて

52

get()orElse(null)に置き換えます。

+0

なぜですか? :)なぜorElseは "or"で始まるのですか? – Dims

+6

これはメソッド名だからです。そして 'else'はキーワードです。 –

+0

@DimsはgetOrElseのちょうど短い形式で、getを省略しています。オプションの場合は、値がnullの場合に 'get'が例外をスローするため、通常は' get'の代わりに 'orElse'を使用しなければなりません。 – puhlen

7
...findFirst().orElse(null); 

存在する場合、さもなければnullを返し、値を返します。ドキュメントsaysは、渡されたパラメータがnullorElseGetorElseThrowで禁止されているもの)である可能性があります。

関連する問題