java 8 之Optional类 介绍

参照api ,基本方法的简单使用案例基本都有:

package com.gksw.web.controller.system;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

public class TestController {
    
    

    public static void main(String[] args) {
    
    



        /**
         * 返回一个空的 Optional
         *  Optional.empty
         */
        Optional<Object> empty = Optional.empty();



        /**
         * 返回一个 Optional指定值的Optional,如果空,则返回一个空的 Optional
         *  Optional.empty
         */
        Optional<Object> o = Optional.ofNullable(null);



        /**
         * 不可传入 null 否则报错 Optional<Object> o = Optional.of(null);
         * 与 ofNullable 不同,ofNullable传入null 返回一个空的 Optional
         */
        //Optional<Object> o1 = Optional.of(null);
        /**
         * 如果存在值 返回 true,否则为 false 。
         * 返回 false
         */
        boolean present = o.isPresent();



        /**
         * 判断optional 是否一致 true
         * 返回 true
         */
        boolean equals = Optional.ofNullable("123").equals(Optional.ofNullable("123"));



        /**
         * 如果 Optional中存在值,则返回值,否则抛出 NoSuchElementException 。
         * 返回 123
         */
        String s = Optional.ofNullable("123").get();



        /**
         * 返回值如果存在,否则返回 orElse 值
         * 返回 123
         */
        String s2 = Optional.ofNullable(s).orElse("1234");



        /**
         *参数:继承Supplier接口的other,当值为null的时候返回
         * 返回:值存在返回值,值不存在返回other
         * 异常:当不允许值为空的情况(例如)下值为空时或other无效抛NullPointerException
         *
         */
        Object s3 = Optional.ofNullable(null).orElseGet(() -> getString());
        Object o1 = empty.orElseGet(() -> "1213123");



        /**
         *  ifPresent :如果存在值,则使用该值调用指定的消费者,否则不执行任何操作。
         */
        String a [] = {
    
    "1","2"};
        Optional.ofNullable(a).ifPresent(t-> {
    
    
            for (String i:t){
    
    
                System.out.println(i);
            }
        });



        /**
         * map 如果存在值,则应用提供的映射函数,如果结果不为空,则返回一个Optional结果的Optional 。 否则返回一个空的Optional
         *
         */
        int a1 [] = {
    
    1,2};
        Optional<List<String>> s1 = Optional.ofNullable(a1).map(t-> {
    
    
            List<String> l = new ArrayList<>();
            for (int i:t){
    
    
                l.add(String.valueOf(i));
            }
            return l;
        });


        /**
         *      如果一个值存在,并且该值给定的谓词相匹配时,返回一个 Optional描述的值,否则返回一个空的 Optional 。
         * 异常
         *     NullPointerException - 如果谓词为空
         */
        Uuser u = new Uuser();
        u.setName("aaaa");
        u.setAge(17);
        Optional<Uuser> aaaa = Optional.ofNullable(u).filter(t -> t.getAge() > 0 && t.getName().equals("aaaa"));
        System.out.println(aaaa.get());
    }

    public static String getString(){
    
    
        return "111";
    }

}
class Uuser{
    
    
    private String name;
    private int age;

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    @Override
    public String toString() {
    
    
        return "Uuser{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40319804/article/details/126741103