Java JDK 8 추가 옵션 도구 클래스 설명

4962 단어 JavaJDK8Optional
Optional
빈 포인터 이 옵션 은 자바 응용 프로그램 이 실패 하 는 가장 흔 한 원인 입 니 다.이전 에는 빈 포인터 이상 을 해결 하기 위해 Google 의 유명한 Guava 프로젝트 에 Optional 클래스 를 도 입 했 습 니 다.Guava 는 빈 값 을 검사 하 는 방식 으로 코드 오염 을 방지 하고 프로그래머 에 게 더 깨끗 한 코드 를 쓰 도록 격려 했 습 니 다.Google Guava 의 영감 을 받 아 Optional 클래스 는 자바 8 라 이브 러 리 의 일부분 이 되 었 습 니 다.optional 은 실제 용기 입 니 다.T 형식의 값 을 저장 하거나 null 만 저장 할 수 있 습 니 다.optional 은 빈 값 검 사 를 하지 않 아 도 되 는 유용 한 방법 을 많이 제공 합 니 다.
1.이전 null 처리

    @Test
    public void test01(){
        //String userName = "  ";
        String userName = null;
        if(userName != null){
            System.out.println("      :" + userName.length());
        }else{
            System.out.println("     ");
        }

    }
2.선택 클래스
optional 은 하위 클래스 가 없 는 도구 클래스 입 니 다.optional 은 null 을 위 한 용기 대상 입 니 다.Null 검 사 를 피하 고 NullpointerException 을 방지 하 는 것 이 주요 역할 입 니 다.
在这里插入图片描述
3.optional 의 기본 사용
optional 대상 생 성 방식

    /**
     * Optional       
     */
    @Test
    public void test02(){
        //         of    of      null 
        Optional<String> op1 = Optional.of("zhangsan");
        //Optional<Object> op2 = Optional.of(null);

        //         ofNullable     null
        Optional<String> op3 = Optional.ofNullable("lisi");
        Optional<Object> op4 = Optional.ofNullable(null);

        //         empty          Optional  
        Optional<Object> op5 = Optional.empty();

    }
4.optional 의 상용 방법

/**
     * Optional        
     *   get():   Optional     ,    NoSuchElementException  
     *          get()   isPresent      
     *   isPresent():       ,     true,      false
     *   orElse(T t):         ,     ,    t
     *   orElseGet(Supplier s):         ,     ,     Lambda       
     */
    @Test
    public void test03(){
        Optional<String> op1 = Optional.of("zhangsan");
        Optional<String> op2 = Optional.empty();

        //   Optional   
        if(op1.isPresent()){
            String s1 = op1.get();
            System.out.println("    :" +s1);
        }

        if(op2.isPresent()){
            System.out.println(op2.get());
        }else{
            System.out.println("op2    Optional  ");
        }

        String s3 = op1.orElse("  ");
        System.out.println(s3);
        String s4 = op2.orElse("  ");
        System.out.println(s4);

        String s5 = op2.orElseGet(()->{
            return "Hello";
        });
        System.out.println(s5);
    }

    @Test
    public void test04(){
        Optional<String> op1 = Optional.of("zhangsan");
        Optional<String> op2 = Optional.empty();
        //           
        op1.ifPresent(s-> System.out.println("  :" +s));
        op1.ifPresent(System.out::println);
    }

    /**
     *        , Person     name          
     */
    @Test
    public void test05(){
        Person p = new Person("zhangsan",18);
        Optional<Person> op = Optional.of(p);
        String name = getNameForOptional(op);
        System.out.println("name="+name);

    }

    /**
     *   Person    name        
     *      Optional    
     * @param op
     * @return
     */
    public String getNameForOptional(Optional<Person> op){
       if(op.isPresent()){
           String msg = //op.map(p -> p.getName())
                   op.map(Person::getName)
                   //.map(p -> p.toUpperCase())
                   .map(String::toUpperCase)
                   .orElse("  ");
           return msg;
       }
       return null;
    }

    /**
     *   Person    name        
     * @param person
     * @return
     */
    public String getName(Person person){
        if(person != null){
            String name = person.getName();
            if(name != null){
                return name.toUpperCase();
            }else{
                return null;
            }
        }else{
            return null;
        }
    }
자바 JDK 8 에 추 가 된 Optional 도구 류 에 대한 설명 은 여기까지 입 니 다.자바 Optional 도구 류 에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기