정구리의 우주정복
[Kotlin] findById().orElseThrow와 findById()의 차이 (Optional) 본문
반응형
코드를 쓰다보면
val routine = routineRepository.findById(routineId).orElseThrow{ IllegalArgumentException("routine not found") }
이렇게 작성한 경우에는 routine 의 값을 가져올때 (isSuccess)
routine.isSuccess
이렇게 가져오고
val routine = routineRepository.findById(routineId)
요롷게 하면
routine.get().isSuccess
이렇게 가져와야한다 왤까
바로바로 타입의 차이이다
orElseThrow 를 사용하게 되면 값이 존재하면 객체 (Routine) 를 반환하고 없으면 예외를 발생하기 때문에 무조건 객체를 가지고 있다고 생각하기 때문에
routine.isSuccess 와 같이 접근할 수 있다.
findById() 는 Optional<Routine> 를 반환하므로 Optional 을 먼저 .get() 으로 풀어야 실제 객체를 꺼내서 쓸 수 있다
코드 / 반환 타입 / isSuccess 접근 방식
| findById(routineId).orElseThrow { ... } | Routine | routine.isSuccess |
| findById(routineId) | Optional<Routine> | routine.get().isSuccess |
반응형
'JAVA > STUDY' 카테고리의 다른 글
| [Kotlin] 공통 Response 정의하기 (0) | 2025.03.11 |
|---|---|
| [Kotlin] 구글 SMTP 연결 및 메일 전송 (2025.02.20 기준) (0) | 2025.02.20 |
| [Kotlin] Dirty Checking (더티 체킹) (0) | 2025.02.02 |
| [Spring] 커스텀 에러 정의, 공통화 , HttpStatus 보여주기 (BaseException 정의하기) (2) | 2024.06.22 |
| [Spring] Exception, RuntimeException 상속에 대해 (Checked Exception, Unchecked Exception 이란 ?) (4) | 2024.06.10 |
Comments