暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java新特性解读JDK8之optional类

227decision 2019-12-31
611


    package com.example.optionaldemo;
    import java.util.Optional;
    /**
     * OptionalMethod.java
     * optional解决空指针异常, 减少代码判空,实现函数式编程
     * @author twotwoseven
     * 2019年12月31日
     */
    public class OptionalMethod {

    /**
     * jdk8之前空判断常用操作
     * @param student
     */
    public static void jdk8BeforeNullStyle(Student student){
    if(null!=student){
    String name = student.getName();
    if(null!=name&&!"".equals(name)){
    //to do
    System.out.println("to do ...");
    }
    }

    }
    /**
     * jdk8空判断操作optional
     * 减少代码判空,实现函数式编程
     * @param student
     */
    public static void jdk8OptionalNullStyle(Student student){
    Optional.ofNullable(student).map(Student::getName).filter(name->!"".equals(name)).ifPresent(name->{
    //to do
    System.out.println("to do something...");
    });

    }
    /**
     * 常用方法测试
     * @param args
     */
    public static void main(String[] args) {
    Student student =null;
    //传null则会抛出异常
    //Optional<Student> optionalOfNull =Optional.of(student);

    //可以传null
    Optional<Student> optionalOfNullable =Optional.ofNullable(student);
    if(optionalOfNullable.isPresent()){
    System.out.println(optionalOfNullable.get());
    }else{
    //throw new NullPointerException();
    }


    //orElse兜底
    Student student2 =Optional.ofNullable(student).orElse(new Student(22,"xm"));
    System.out.println(student2.getName());

    //对比测试
    jdk8BeforeNullStyle(student);
      jdk8OptionalNullStyle(new Student(22,"aa"));
     }
    }

    最后修改时间:2020-07-01 13:37:33
    文章转载自227decision,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论