java optional
2022-03-05 20:33 tonyniu8 阅读(23) 评论(0) 收藏 举报#1. 创建实例
 private static void createOptional(){
        //1. create instance
        // use of or ofNullable
        //of need to ensure it is not empty
        Person nullPerson=null;
        String nullName=getNameWithOptional(nullPerson);
        System.out.println(nullName);
        Person person = new Person("junjun", 18);
        Person  result = Optional.ofNullable(nullPerson).orElse(person);
        System.out.println("the default method");
        System.out.println(result);
    }
#2.访问optional对象值
    // T get() // if it is null: NoSuchElementException.
    // isPresent,whether value exist.
    // void ifPresent(Consumer<?super T> consume)
    // 2.get ,if it is null: noSuchElementException
    private static String getValue(Person person) {
        Optional<Person> personOptional= Optional.ofNullable(person);
        if(personOptional.isPresent()){
            Optional.ofNullable(person).get();
        }
        return personOptional.get().getName();
    }
#3.返回默认值
    // 3.orElse , return default value
    private static String getOrElse() {
        Person person = null;
        Person defaultPerson =new Person("zhangsan",20);
        Person p= Optional.ofNullable(person).orElse(defaultPerson);
        //orElseGet, when value is null , it will call method
        Person p2= Optional.ofNullable(person).orElseGet(()->createPerson());
        return p.getName();
    }
#4.返回异常
    //4. orElseThrow
    // throw user defined exception, when object is null
    private static String orElseThrow(Person person) {
        Person p= Optional.ofNullable(person).orElseThrow(()->new IllegalArgumentException());
        return p.getName();
    }
#5. 值转换
    //5. value mapping
    private static String valueMapping(Person person) {
        String name = Optional.ofNullable(person).map(x -> x.getName())
                .orElse("unKnown");
        return name;
    }
# ref:
                    
                
                
            
        
浙公网安备 33010602011771号