2016-08-02 1 views
23

나는 자바에서 다음 검색 코드가 있습니다없이 'Optional.get()' 'isPresent()'확인

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)으로 바꿉니다. 현재, 그렇지 않으면 null을 반환하는 경우

+0

왜? :) 왜 orElse가 "or"로 시작하는가? – Dims

+6

이것이 메소드 이름이기 때문입니다. 그리고'else'는 키워드입니다. –

+0

@Dims는 getOrElse의 간단한 형태로 get을 생략했습니다. 선택적으로 값이 null이면'get'가 예외를 던지기 때문에 보통'get' 대신에'orElse'를 사용해야합니다. – puhlen

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

는 값을 돌려줍니다. 문서 says은 전달 된 매개 변수가 null 일 수 있습니다 (orElseGetorElseThrow에 대해 금지 된 내용).