programing

'isPresent' 체크 없이 'Optional.get()'을 클릭합니다.

luckcodes 2022. 9. 19. 21:59

'isPresent' 체크 없이 'Optional.get()'을 클릭합니다.

Java 검색 코드는 다음과 같습니다.

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

나는 칼럼을 이름으로 찾아서 처음 찾은 칼럼을 돌려주고 싶었다.

아무것도 발견되지 않은 경우는 알고 있습니다만, 어떻게 처리하면 좋을까요?

이런 욕설로 원하는 게 이거야?

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

?

어떻게 고칠까?돌아오고 싶다null아무 것도 발견되지 않으면.

갱신하다

알았어, 알았어, 난 몰랐을 뿐이야findFirst()돌아온다Optional.

교체하다get()를 참조해 주세요.

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

값이 있으면 값을 반환하고 없으면 값을 반환합니다.null매뉴얼에 따르면 전달된 파라미터는 다음과 같습니다.null(및 에 대해 금지되어 있는 것)

나의 해결책은 이렇게 확인하는 것이었다.

if(item.isPresent()){
  item.get().setId("1q2w3e4r5t6y")
}

선택사항은 지난 수십 년 동안 코드가 생성되어 마침내 null을 피하기 시작했습니다.

.get()을 삭제하고 옵션 자체를 반환하고 발신자 코드를 적절히 처리합니다(null을 반환하는 경우와 마찬가지로).

아래와 같이 사용할 수 있습니다.

.map(Object)
.filter(Optional::isPresent)
.map(Optional::get)
.orElse(null)

언급URL : https://stackoverflow.com/questions/38725445/optional-get-without-ispresent-check