널 값 처리 향상
Java SE 17부터 스위치 표현식에서 널 값 처리가 향상되었습니다. 이 새로운 기능을 통해 널 값을 직접 처리할 수 있어 코드의 안정성과 가독성이 크게 향상됩니다.
널 값 처리의 중요성
- 프로그램 안정성: 널 포인터 예외를 방지하여 프로그램의 안정성을 높입니다.
- 예외 처리: 예상치 못한 널 값에 대한 대비책을 마련할 수 있습니다.
- 코드 간결성: 널 체크를 스위치 표현식 내에서 직접 수행할 수 있어 코드가 더 간결해집니다.
기본적인 널 체크 예시
String input = null; // 또는 사용자 입력 등으로 설정
String result = switch (input) {
case null -> "널 값입니다.";
case "" -> "빈 문자열입니다.";
default -> "값: " + input.length();
};
System.out.println(result);
이 예제에서:
case null
을 사용하여 널 값을 직접 처리합니다.- 빈 문자열("")도 별도로 처리합니다.
default
케이스로 널이 아니고 빈 문자열이 아닌 모든 경우를 다룹니다.
복합 조건에서의 널 처리
복잡한 조건에서 널 처리가 필요한 경우:
Object obj = null; // 또는 실제 객체
String type = switch (obj) {
case null -> "널 객체";
case Integer i -> "정수: " + i;
case String s when s.length() > 5 -> "긴 문자열: " + s.substring(0, 5) + "...";
default -> "기타 객체";
};
System.out.println(type);
이 예제에서:
null
체크 후 다양한 타입의 객체를 처리합니다.when
절을 사용하여 문자열 길이에 따른 추가적인 조건을 지정합니다.
옵셔널 클래스와의 통합
Optional
클래스와 함께 사용하면 더 안전한 널 처리가 가능합니다:
import java.util.Optional;
Optional<String> optionalValue = Optional.empty(); // 또는 Optional.of("값")
String processedValue = switch (optionalValue) {
case Optional.empty() -> "값이 비어있습니다.";
case var nonEmpty when nonEmpty.isPresent() -> "값: " + nonEmpty.get();
default -> "예상치 못한 상황";
};
System.out.println(processedValue);
이 예제에서:
Optional.empty()
를 사용하여 빈 옵셔널을 확인합니다.- 패턴 매칭을 사용하여 비어있지 않은 옵셔널의 값을 안전하게 추출합니다.
장점
- 안전성: 널 값에 대한 명시적인 처리로 NullPointerException을 방지합니다.
- 가독성: 널 체크 로직을 스위치 표현식 내에서 명확히 표현할 수 있습니다.
- 유연성: 다양한 유형의 객체나 값에 대해 널 처리를 적용할 수 있습니다.
- 간결성: 별도의 널 체크 로직 없이 스위치 표현식 내에서 직접 처리할 수 있습니다.
주의사항
- 이 기능은 Java SE 17부터 사용 가능하며, 이전 버전에서는 널 값으로 인한 NullPointerException이 발생할 수 있습니다.
- 복잡한 널 체크 로직의 경우, 별도의 메서드로 분리하는 것이 코드 가독성을 높이는 데 도움이 될 수 있습니다.
편히 모아진 글 보시려면 아래 위키독스 링크 >>
https://wikidocs.net/book/17111
'JAVA' 카테고리의 다른 글
JAVA: switch문의 완성성 보장, 케이스 블록 사용한 switch [코딩백과 with JAVA] (1) | 2024.12.22 |
---|---|
JAVA: switch 표현식의 값 생성[코딩백과 with JAVA] (0) | 2024.12.22 |
JAVA: Case에 String 타입 사용, Null 선택자 변수[코딩백과 with JAVA] (0) | 2024.12.22 |
JAVA: Switch문과 If-then-else 선택 [코딩백과 with JAVA] (0) | 2024.12.22 |
JAVA Switch문 [코딩백과 with JAVA] (0) | 2024.12.22 |