
Java Stream을 사용해서 좀 더 깔끔하게 null 체크하기!
시작합니다! 🐯
Stream.of().anyMatch(Objects::isNull)는 Java의 Stream API와 Objects 클래스의 유틸리티 메서드를 조합해 스트림 내에 null 값이 있는지 확인할 때 사용하는 코드이다. 이 구문을 자세히 분석하면 아래와 같은 요소들로 구성된다.
Stream.of()Stream.of()는 Java 8에서 추가된 Stream API의 메서드로, 지정된 요소들로 스트림(Stream)을 생성한다. 스트림은 데이터를 처리하는데 있어 선언적이고 함수형 스타일을 사용할 수 있도록 도와주는 클래스이다. Stream.of()는 가변인자(varargs)를 받기 때문에 여러 개의 요소를 전달할 수 있다.
예시:
Stream<String> stream = Stream.of("A", "B", "C");
여기서 "A", "B", "C"는 스트림에 포함된 요소들이다.
Objects::isNullObjects::isNull은 Java의 Objects 유틸리티 클래스에 있는 정적 메서드로, 입력된 객체가 null인지 확인하는 메서드이다. 이는 object == null과 동일한 역할을 한다.
boolean result = Objects.isNull(someObject); // true if someObject is null
anyMatch()anyMatch()는 Stream API에서 제공하는 메서드로, 스트림의 요소 중 하나라도 주어진 조건(predicate)을 만족하면 true를 반환한다. 모든 요소를 확인하지 않고, 조건에 맞는 첫 번째 요소를 찾으면 탐색을 중단하고 true를 반환한다.
예시:
boolean hasEven = Stream.of(1, 2, 3).anyMatch(n -> n % 2 == 0); // true
위 코드에서 스트림에 있는 숫자 중 하나라도 짝수면 true를 반환한다.
Stream.of().anyMatch(Objects::isNull)이제 이 코드의 전체 의미를 보면, Stream.of()로 생성된 스트림 내에 null이 있는지 확인하는 과정이다. Objects::isNull은 요소가 null인지 판단하는 기준이 되고, anyMatch()는 해당 조건을 만족하는 요소가 하나라도 있으면 true를 반환한다.
boolean hasNull = Stream.of("A", null, "C").anyMatch(Objects::isNull);
System.out.println(hasNull); // true
이 코드는 "A", null, "C"로 구성된 스트림에서 하나라도 null인 값이 있는지를 확인하는 것이다. null 값이 존재하기 때문에 hasNull은 true가 된다.
Stream.of("A", null, "C"): 스트림에 "A", null, "C" 세 가지 값을 넣는다.anyMatch(Objects::isNull): 각 요소가 null인지 검사하는데, null이 발견되면 true를 반환하고 스트림 탐색을 종료한다.이 코드는 다양한 곳에서 유용하게 사용할 수 있다. 예를 들어, 메서드에 전달된 여러 매개변수나 리스트에 null 값이 있는지 빠르게 확인할 수 있다.
public void processData(String a, String b, String c) {
if (Stream.of(a, b, c).anyMatch(Objects::isNull)) {
throw new IllegalArgumentException("One or more arguments are null");
}
// 처리 로직
}
여기서는 메서드로 전달된 a, b, c 중 하나라도 null이면 예외를 던진다.
List<String> list = Arrays.asList("apple", null, "banana");
boolean containsNull = list.stream().anyMatch(Objects::isNull);
System.out.println(containsNull); // true
리스트에서 null 값을 찾을 때도 anyMatch와 Objects::isNull을 사용할 수 있다.
Stream.of().anyMatch(Objects::isNull)는 스트림에서 null 값을 빠르게 찾는 데 유용한 구문이다. Stream.of()로 스트림을 만들고, anyMatch()를 사용해 Objects::isNull을 기준으로 null 여부를 검사한다. 이 방식은 코드의 간결성과 가독성을 높이며, 특히 데이터 유효성 검사나 필드 검증에서 자주 사용될 수 있다.