> Java > java지도 시간 > Java8 신기능 사용법 소개 선택사항(코드 포함)

Java8 신기능 사용법 소개 선택사항(코드 포함)

不言
풀어 주다: 2019-04-13 11:55:48
앞으로
4818명이 탐색했습니다.

이 기사는 Java 8의 새로운 기능인 Optional(코드 포함)의 사용법을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

Optional 클래스(java.util.Optional)는 값의 유무를 나타내는 컨테이너 클래스입니다. 원래는 값이 없음을 나타내는 데 사용되었으나 이제는 이 개념을 더 잘 표현할 수 있습니다. 그리고 널 포인터 예외를 피할 수 있습니다.

1. of

null이 아닌 값에 대해 Optional을 생성합니다. 값이 null이면 NullPointerException이 발생합니다.

Optional<Integer> optional = Optional.of(13);
System.out.println(optional)
로그인 후 복사

2. 지정된 값에 대해 Optional을 생성합니다. null이면 빈 Optional을 반환합니다.

Optional<String> optional2 = Optional.ofNullable(null);
System.out.println(optional2);
optional2 = Optional.ofNullable("aaa");
System.out.println(optional2);
로그인 후 복사

3.isPresent

값이 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

Optional<String> optional2 = Optional.ofNullable(null);
System.out.println(optional2);
System.out.println(optional2.isPresent());

optional2 = Optional.ofNullable("aaa");
System.out.println(optional2);
System.out.println(optional2.isPresent());
로그인 후 복사

4. get

Optional에 값이 있으면 반환하고, 그렇지 않으면 NoSuchElementException을 발생시킵니다.

optional2 = Optional.ofNullable("aaa");
System.out.println(optional2);
System.out.println(optional2.isPresent());
System.out.println(optional2.get());
로그인 후 복사

5. ifPresent

Optional 인스턴스에 값이 있으면 소비자에게 전화하세요. 그렇지 않으면 처리가 수행되지 않습니다. Hermit은 그들 사이에서 무효 판결을 내 렸습니다.

public static void main(String[] args) {
    String str1 = "hello";
    String str2 = null;
    Optional<String> optional1 = Optional.ofNullable(str1);
    Optional<String> optional2 = Optional.ofNullable(str2);

    optional1.ifPresent(str->System.out.println(str.length()));
    optional2.ifPresent(str-> System.out.println(str.length()));
}
로그인 후 복사

6, orElse

값이 있으면 이를 반환하고, 그렇지 않으면 지정된 다른 값을 반환합니다.

public static void main(String[] args) {
    String str1 = "hello";
    String str2 = null;
    Optional<String> optional1 = Optional.ofNullable(str1);
    Optional<String> optional2 = Optional.ofNullable(str2);
    System.out.println(optional1.orElse("默认字符串"));
    System.out.println(optional2.orElse("默认字符串"));
}
로그인 후 복사

7. orElseGet

orElseGet은 orElse 메소드와 유사하지만 차이점은 얻은 기본값에 있습니다. orElse 메소드는 들어오는 값을 기본값으로 사용합니다. orElseGet 메소드는 기본값

public static void main(String[] args) {
    Integer i = 20;
    Optional<Integer> op = Optional.ofNullable(i);
    System.out.println(op.orElseGet(()->0));
    System.out.println(Optional.ofNullable(null).orElseGet(()->0));
}
로그인 후 복사

8, orElseThrow

을 생성하기 위해 공급자 인터페이스의 구현을 허용할 수 있습니다. 값이 있으면 반환되고 그렇지 않으면 예외가 발생합니다. 공급자 인터페이스에 의해 생성된 메시지가 발생합니다.

public static void main(String[] args) {
    // 自己指定异常
    System.out.println((Optional.ofNullable("a").orElseThrow(()->new IndexOutOfBoundsException())));
    System.out.println((Optional.ofNullable(null).orElseThrow(()->new IndexOutOfBoundsException())));
}
로그인 후 복사

9. map

map은 값이 있는 상황을 처리합니다. 값이 있으면 map 매개변수에서 함수를 실행하여 반환 값을 가져오고, 그렇지 않으면 빈 Optional을 반환합니다.

public static void main(String[] args) {
   List<String> list = new ArrayList<String>(){
       {
            add("aaa");
            add("bbb");
            add(null);
       }
   };

   list.stream().forEach(temp ->{
        Optional<String> opt = Optional.ofNullable(temp);
        System.out.println(opt.map(n -> {
           return n.toUpperCase();
        }).orElse("Nothing"));
   });

   // 简写为如下形式
    list.stream().forEach(temp->{
        System.out.println(Optional.ofNullable(temp).map(n->n.toUpperCase()).orElse("Nothing"));
    });
}
로그인 후 복사

10. flatMap

값이 있으면 매핑 함수를 실행하여 Optional 유형 반환 값을 반환하고, 그렇지 않으면 빈 Optional을 반환합니다. flatMap은 map(Funtion) 메소드와 유사하지만, 차이점은 flatMap의 매퍼 반환 값이 Optional이어야 한다는 것입니다. 호출이 끝나면 flatMap은 결과를 Optional로 캡슐화하지 않습니다. 콘텐츠

public static void main(String[] args) {
    Optional<String> opt1 = Optional.ofNullable("aaa");
    Optional<String> opt2 = Optional.ofNullable(null);
    System.out.println(opt1.flatMap(n->{
        return Optional.ofNullable(n.toUpperCase());
    }).orElse("还会没有吗"));

    System.out.println( opt2.flatMap(n->{
        return Optional.ofNullable(n.toUpperCase());
    }).orElse("还会没有吗"));
}
로그인 후 복사

11, 필터

를 추가할 수 있습니다. 값이 있고 어설션 조건이 충족되면 해당 값을 포함하는 Optional이 반환되고, 그렇지 않으면 빈 Optional이 반환됩니다.

public static void main(String[] args) {
    Optional<String> opt1 = Optional.ofNullable("aabbbbaa");
    Optional<String> opt2 = Optional.ofNullable(null);

    System.out.println(opt1.filter(value->value.length()>6));
    System.out.println(opt2.filter(value->value.length()>6));
}
로그인 후 복사

자, 여기가 Java 8의 새로운 기능인 Optional이 소개되는 곳입니다.

위 내용은 Java8 신기능 사용법 소개 선택사항(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿