산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java 9 - 선택적 클래스 개선 사항

선택적 클래스는 null 검사 및 NullPointerException 문제를 피하기 위해 Java 8에 도입되었습니다. Java 9에서는 기능을 개선하기 위해 세 가지 새로운 메소드가 추가되었습니다.

stream() 메소드

구문

public Stream<T> stream()

값이 있으면 해당 값만 포함하는 순차적 Stream을 반환하고, 그렇지 않으면 빈 Stream을 반환합니다.

예시

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Tester {
public static void main(String[] args) {
   List<Optional<String>> list = Arrays.asList (
      Optional.empty(), 
      Optional.of("A"), 
      Optional.empty(), 
      Optional.of("B"));

      //filter the list based to print non-empty values
  
      //if optional is non-empty, get the value in stream, otherwise return empty
      List<String> filteredList = list.stream()
         .flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
         .collect(Collectors.toList());

      //Optional::stream method will return a stream of either one 
      //or zero element if data is present or not.
      List<String> filteredListJava9 = list.stream()
         .flatMap(Optional::stream)
         .collect(Collectors.toList());

      System.out.println(filteredList);
      System.out.println(filteredListJava9);
   }  
}

출력

[A, B]
[A, B]

ifPresentOrElse() 메소드

구문

public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)

값이 있으면 해당 값으로 지정된 작업을 수행하고, 그렇지 않으면 지정된 빈 기반 작업을 수행합니다.

예시

import java.util.Optional;

public class Tester {
   public static void main(String[] args) {
      Optional<Integer> optional = Optional.of(1);

      optional.ifPresentOrElse( x -> System.out.println("Value: " + x),() -> 
         System.out.println("Not Present."));

      optional = Optional.empty();

      optional.ifPresentOrElse( x -> System.out.println("Value: " + x),() -> 
         System.out.println("Not Present."));
   }  
}

출력

Value: 1
Not Present.

또는() 메서드

구문

public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)

값이 있으면 값을 설명하는 Optional을 반환하고, 그렇지 않으면 제공하는 함수에서 생성한 Optional을 반환합니다.

예시

import java.util.Optional;
import java.util.function.Supplier;

public class Tester {
   public static void main(String[] args) {
      Optional<String> optional1 = Optional.of("Mahesh");

      Supplier<Optional<String>> supplierString = () -> Optional.of("Not Present");

      optional1 = optional1.or( supplierString);
  
      optional1.ifPresent( x -> System.out.println("Value: " + x));
    
      optional1 = Optional.empty();    

      optional1 = optional1.or( supplierString);
  
      optional1.ifPresent( x -> System.out.println("Value: " + x));  
   }  
}

출력

Value: Mahesh
Value: Not Present

java

  1. 자바 최종 키워드
  2. 자바 instanceof 연산자
  3. 자바 중첩 정적 클래스
  4. 자바 익명 클래스
  5. 자바 싱글톤 클래스
  6. 자바 리플렉션
  7. 자바 ObjectOutputStream 클래스
  8. 자바 제네릭
  9. 자바 파일 클래스
  10. Java 9 - 스트림 API 개선 사항