본문 바로가기
Java

Java Optional Class

by titlejjk 2023. 6. 26.

Java에서 Optional Class는 Java8부터 도입된 클래스로, 값이 존재하지 않을 수도 있는 상황에서 사용된다. 주로 null 값을 다루는 데에 사용되며, NullPointerException을 방지하고 코드의 안정성을 높이는데에 도움을 준다.

Optional은 제네릭 클래스로 정의되어 있어서 다양한 타입의 값들을 포장할 수 있다.

 

이 클래스는 다음과 같은 메소드들을 제공하는데, 각 메소드들의 예제를 통해 간단히 알아보자면,

 

of( )👉

주어진 값으로 Optional 객체를 생성한다. 값이 null인 경우 NullPointerException이 발생한다.

Optional<String> optional1 = Optional.of("Hello");
System.out.println(optional1.get()); // 출력: Hello

Optional<String> optional2 = Optional.of(null); // NullPointerException 발생

ofNullable( )👉

주어진 값으로 Optional 객체를 생성한다. 값이 null인 경우에도 정상적으로 Optional객체가 생성되며, 이후 메소드 호출시에는 값이 없는 상태로 처리된다.

Optional<String> optional1 = Optional.ofNullable("Hello");
System.out.println(optional1.get()); // 출력: Hello

Optional<String> optional2 = Optional.ofNullable(null);
System.out.println(optional2.isPresent()); // 출력: false

isPresent( )👉

Optional객체에 값이 존재하는지 여부를 확인한다.

Optional<String> optional = Optional.ofNullable("Hello");
System.out.println(optional.isPresent()); // 출력: true

Optional<String> emptyOptional = Optional.empty();
System.out.println(emptyOptional.isPresent()); // 출력: false

get( )👉

Optional객체에 포장된 값을 가져온다. 값이 없는 경우 NoSuchElementException이 발생한다. 따라서 isPresent( )메소드를 사용하여 값이 있는지 확인하는 방법이 더 좋다.

Optional<String> optional = Optional.ofNullable("Hello");
if (optional.isPresent()) {
    System.out.println(optional.get()); // 출력: Hello
}

Optional<String> emptyOptional = Optional.empty();
System.out.println(emptyOptional.get()); // NoSuchElementException 발생

orElse( )👉

Optional객체에 값이 존재하는 경우 해당 값을 반환하고, 값이 없는 경우에는 주어진 기본값을 반환한다.

Optional<String> optional = Optional.ofNullable("Hello");
String value1 = optional.orElse("Default Value");
System.out.println(value1); // 출력: Hello

Optional<String> emptyOptional = Optional.empty();
String value2 = emptyOptional.orElse("Default Value");
System.out.println(value2); // 출력: Default Value

orElseGet( )👉

Optional객체에 값이 존재하는 경우 해당 값을 반환하고, 값이 없는 경우에는 주어진 Supplier의 결과 값을 반환한다. Supplier 는 값을 생성하는 함수형 인터페이스이다.

Optional<String> optional = Optional.ofNullable("Hello");
String value1 = optional.orElseGet(() -> "Default Value");
System.out.println(value1); // 출력: Hello

Optional<String> emptyOptional = Optional.empty();
String value2 = emptyOptional.orElseGet(() -> "Default Value");
System.out.println(value2); // 출력: Default Value

orElseThrow( )👉

Optional 객체에 값이 존재하는 경우 해당 값을 반환하고, 값이 없는 경우에는 주어진 예외를 발생시킨다.

Optional<String> optional = Optional.ofNullable("Hello");
String value1 = optional.orElseThrow(() -> new IllegalArgumentException("Value is null"));
System.out.println(value1); // 출력: Hello

Optional<String> emptyOptional = Optional.empty();
String value2 = emptyOptional.orElseThrow(() -> new IllegalArgumentException("Value is null")); // IllegalArgumentException 발생

 

'Java' 카테고리의 다른 글

Unit TestCode작성해보기(Feat공부해보기)  (0) 2023.08.28
JAVA request.getParameter()  (0) 2023.06.29
JAVA Jstl  (0) 2023.06.19
JAVA try-cath-finally 🧏‍♂️try-with-resources  (0) 2023.06.14
JAVA Cookie  (0) 2023.06.13

댓글