[기술정리] Optional

송송승현's avatar
Nov 20, 2024
[기술정리] Optional

정의

💡
NullPointException을 예방하기 위해 사용
optional을 통해 null참조를 명시적으로 처리할 수 있음
값이 존재할 수도 있고, 존재하지 않을 수 있는 상황을 유연하게 처리하기 위한 도구

예제

import java.util.Optional; // 옵셔널 : null 처리 public class App { public static void main(String[] args) { String data1 = null; Optional<String> op1 = Optional.ofNullable(data1); if(op1.isPresent()) { String r1 = op1.get(); System.out.println("r1 : " + r1); } String data2 = "null"; // orElseGet : data2에 값이 없으면 람다 활용 Supplier get에 문자열을 담아 호출 String r2 = Optional.ofNullable(data2).orElseGet(() -> "없어"); System.out.println("r2 : " + r2); String data3 = null; // orElseThrow : data2에 값이 없으면 람다 활용 exception 호출 String r3= Optional.ofNullable(data3). orElseThrow(() -> new RuntimeException("값이 없는데???")); System.out.println("r2 : " + r2); } }

장점

  • NullPointException 방지 : 명시적으로 값을 확인하고 처리함으로 NullPointException 예방
  • 코드 가독성 향상 : 값이 존재할 수 있는지 여부를 명확하게 표현
  • 명시적 표현 : null 처리를 더 명확하게 표현

단점

  • 메모리 사용 증가 : Optional 객체는 래핑된 객체를 포함하기 때문에 메모리 사용이 증가
  • 오버헤드 : 간단한 값 처리에도 불필요한 오버헤드를 초래할 수 있음
  • 남용 가능성 : 모든 경우에 사용할 필요 없으며, 잘못 사용하면 오히려 코드가 복잡
  • 부적절한 예외 회피 : 모든 null을 optional로 감싸는 것이 좋은 방법 X, 적절할 예외처리가 필요
Share article

송승현의 블로그