자바 8 새로운 특성 총화 - 2. Optional 클래스

3116 단어 Java
모든 예제 코드 패키지 다운로드: 클릭 하여 링크 열기
자바 8 의 새로운 기능: 
  • 인터페이스 에 기본 방법 과 정적 방법 이 추가 되 었 습 니 다
  • 선택 클래스
  • Lambda 표현 식
  • 방법 인용
  • Stream API - 함수 식 조작 흐름 요소 집합
  • Date/Time API
  • 새 API 와 도구
  • Nashorn, JavaScript 엔진
  • 2. 선택 클래스
        자바 에서 가장 흔히 볼 수 있 는 버그 는 바로 빈 포인터 이상 입 니 다. 자바 8 이전에 구 글 과 바 는 NullPointer Exception 을 해결 하기 위해 Optionals 클래스 를 도입 하여 소스 코드 가 각종 null 검사 에 오염 되 지 않도록 개발 자 들 이 더욱 깔끔 한 코드 를 쓸 수 있 도록 합 니 다. 자바 8 도 Optional 을 공식 라 이브 러 리 에 추가 하 였 습 니 다. 
        optional 은 하나의 용기 일 뿐 T 형식의 값 이나 null 을 저장 합 니 다. 명시 적 null 검 사 를 피하 기 위해 유용 한 인 터 페 이 스 를 제공 합 니 다.
    자주 사용 하 는 몇 가지 방법: 
    번호
    방법.
    묘사 하 다.
    1
    static Optional empty();
    빈 Optional 인 스 턴 스 되 돌리 기
    2
    static Optional of(T value);
    null 이 아 닌 optional 인 스 턴 스 를 되 돌려 줍 니 다. 매개 변수 가 null 이면 이상 을 직접 보고 합 니 다.
    3
    static Optional ofNullable(T value);
    value 를 포함 하 는 optional 인 스 턴 스 를 되 돌려 줍 니 다. 인자 가 null 이면 빈 optional 인 스 턴 스 를 되 돌려 줍 니 다.
    4
    T get();
    포함 값 이 null 이 아니라면 이 값 을 되 돌려 줍 니 다. 그렇지 않 으 면 이상 을 던 집 니 다: NoSuchElement Exception
    5
    boolean isPresent();
    포함 값 이 null 이 아니라면 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 입 니 다.
    6
    void ifPresend(Consumer supper T> consumer);
    포함 값 이 null 이 아니라면 consumer 를 호출 합 니 다. 그렇지 않 으 면 아무것도 하지 않 습 니 다.
    7
    T orElse(T other);
    포함 값 이 null 이 아니라면 이 값 을 되 돌려 줍 니 다. 그렇지 않 으 면 other 로 되 돌려 줍 니 다.
    8
    T orElseGet(Supplier extends T> other);
    포함 값 이 null 이 아니라면 이 값 을 되 돌려 줍 니 다. 그렇지 않 으 면 other 를 실행 하고 other 호출 결 과 를 되 돌려 줍 니 다.
    9
    T orElseThrow(Supplier extends X> exceptionSupplier) throws X;
    포함 값 이 null 이 아니라면 이 값 을 되 돌려 줍 니 다. 그렇지 않 으 면 Supplier 가 계승 하 는 이상 을 던 집 니 다.
    10
    Optional filter( predicate); 如果包含值不为null , 且该值匹配给定的predicate , 则返回包含该值得Optional实例 , 否则返回空的Optional 11 Optional map(Function supper T , ? extends U> mapper); 如果包含值不为null , 则调用提供的映射方法 , 如果返回非null , 返回一个Optional实例 12 Optional flatMap(Function supper T , Optional> mapper); 如果包含值不为null , 则返回映射方法处理之后的的Optional实例 , 否则返回空的Optional
    代码Demo : 
    package com.xbz.java8.optional;
    ​
    import java.util.Optional;
    ​
    /** @title Optional */
    public class OptionalDemo1 {
        public static void main(String[] args){
            Integer i1 = null;
            Integer i2 = new Integer(10);
            Optional optional1 = Optional.ofNullable(i1);
            Optional optional2 = Optional.of(i2);
    ​
            System.out.println(optional1.isPresent());//       
            optional2.ifPresent(i -> System.out.println(i * 2));//          (      ,      )
            System.out.println(optional1.orElse(0));// null      
            System.out.println(optional2.get());//   
        }
    }

    출력 결과: 
    false
    20
    0
    10

    좋은 웹페이지 즐겨찾기