码迷,mamicode.com
首页 > 其他好文 > 详细

Optional类

时间:2020-03-14 15:09:22      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:throw   其他   直接   extend   new   code   array   red   nullable   

public class Test {
    /*
     * Optional实际上是个容器,它是一个装一个对象的容器。这个对象可能是个空,可能是非空。
     * 数组和集合是装多个对象的容器。
     *
     * 1、创建Optional对象的方法:
     * (1)Optional.of(xx);              只能装非空对象
     * (2)Optional.ofNullable(x);        装可以是null的对象
     * (3)Optional<T> empty()          直接返回一个空箱子对象
     *
     * 2、如何取出Optional容器中的对象
     * (1)get()  必须配合of(xx)使用,因为这里面的对象不能是null
     * (2)orElse(T other)   如果Optional容器中的对象是空的,用other代替
     * (3)orElseGet(Supplier<? extends T> other) 如果Optional容器中的对象是空的,用other这个供给型接口提供的对象代替
     * (4)orElseThrow(Supplier<? extends X> exceptionSupplier)
     *
     * 3、其他操作
     * Optional<T> filter(Predicate<? super T> predicate)
     */
    public static void main(String[] args) {
//        test1();
//        test2();
//        test3();
//        test4();
//        test5();
//        test6();
//        test7();
//        test8();
//        test9();
    }

    public static void test1() {
        ArrayList<Student> list = new ArrayList<>();
        list.add(new Student("张三", 23));
        //...

        //取出流中第一个年龄大于30岁的学生
        Optional<Student> opt = list.stream()
                .filter(s -> s.getAge() > 30)
                .findFirst();


        //打印该学生的年龄
        Student stu = opt.orElse(new Student());
        System.out.println("学生的年龄:" + stu.getAge());
    }


    public static void test2() {
        String str = "hello";
        Optional<String> opt = Optional.of(str);
        System.out.println(opt);
    }

    public static void test3() {
        String str = null;
        Optional<String> opt = Optional.ofNullable(str);
        System.out.println(opt);
    }

    public static void test4() {
        String str = "hello";
        Optional<String> opt = Optional.of(str);

        String string = opt.get();
        System.out.println(string);
    }

    public static void test5() {
        String str = null;
        Optional<String> opt = Optional.ofNullable(str);
        System.out.println(opt.get());//java.util.NoSuchElementException: No value present
    }

    public static void test6() {
        String str = "hello";
        Optional<String> opt = Optional.ofNullable(str);
        String string = opt.orElse("world");
        System.out.println(string);
    }

    public static void test7() {
        String str = null;
        Optional<String> opt = Optional.ofNullable(str);
        String string = opt.orElseGet(String::new);
        System.out.println(string);
    }

    public static void test8() {
        String str = null;
        Optional<String> opt = Optional.ofNullable(str);
        String string = opt.orElseThrow(() -> new RuntimeException("值不存在"));
        System.out.println(string);
    }

    public static void test9() {
        String str = "hello";
        Optional<String> opt = Optional.ofNullable(str);
        Optional<String> opt2 = opt.filter(s -> s.length() > 5);
        System.out.println(opt2);
    }

}

class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    public Student() {
        super();
    }

    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 "Student [name=" + name + ", age=" + age + "]";
    }

}

 

Optional类

标签:throw   其他   直接   extend   new   code   array   red   nullable   

原文地址:https://www.cnblogs.com/hpdblogs/p/12491750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!