-
[Java] Optional<T>프로그래밍/JAVA 2023. 3. 12. 10:54728x90
Optional을 사용하면 예상치 못한 NullPointerException 예외를 제공되는 메소드로 간단히 회피할 수 있다.
즉, 복잡한 조건문 없이도 널(null) 값으로 인해 발생하는 예외를 처리할 수 있게 된다.
Optional를 사용하지 않을 경우, 조건문을 사용하여 null 체크를 해줘야한다.
List<Member> member = memberRepository.findById(id); // member == null 일경우 String name = member.getName(); // NullPointerException 발생
List<Member> member = memberRepository.findById(id); // member == null 일경우 String name = ""; if(member != null){ name = member.getName(); }
Optional를 사용하기 위한 관련 메소드를 알아보자.
1. get()
Optional을 사용하여 Optional에 저장된 값은 get() 메서드를 통해 접근할 수 있다.\
Optional<Member> member = memberRepository.findById(id); Member mem = member.get();
다만 직접 get()를 호출하기 전에 Optional 객체에 값이 저장되어있는지 확인하고 호출해야한다.
만일 저장된 값이 없으면 NullPointerException 이 발생하게 된다. get()호출하기전 isPresent() 메소드를 활용하여 null 체크를 진행할 수 있다.
2. isPresent()
Optional 객체가 값을 가지고 있다면 true, 값이 없다면 false 리턴한다.
Optional<Member> member = memberRepository.findById(id); String name = ""; if(member.isPresent()){ // member에 값이 있을 경우 true Member mem = member.get(); name = mem.getName(); }
3. ifPresent()
Optional 객체가 값을 가지고 있으면 화살표 함수를 사용하여 함수를 실행하고 값이 없으면 다음으로 넘어간다.
String name = ""; member = memberRepository.findById(idx).ifpresent(mem -> { name = mem.getName(); });
4. orElse()
Optional 객체에 값 여부는 isPresent() 메소드 외 orElse()로도 가능하다. Optional 객체에 값이 저장되지 않았을 경우 orElse() 메소드를 통해 명시된 값을 대신 반환한다.
Member member = memberRepository.findById(id).orElse(new Member());
5. orElseThrow()
Optional 객체에 값이 저장되어있지 않을 경우, 명시적으로 예외를 던질 때 사용한다.
Member member = memberRepository.findById(id) .orElseThrow(new NoSuchElementException("Person not found"));
728x90'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] Arrays.sort 정렬 (0) 2024.08.30 [Java] int[] to Integer[], Integer[] to int[] (0) 2024.08.29 [Java] 스트림(Stream) (0) 2023.03.11 [Java] Arrays.asList() (0) 2023.03.11 [Java] Selenium(셀레니움) (0) 2022.08.18