搜索
写经验 领红包

java写法(java怎么写ui)

导语:Java学习:教你更优雅的写法处理null检查

回顾以前对null的处理方式
public class OptionalTest {    public static void main(String[] args) {        test01(&34;);        test01(null);    }    public static void test01(String userName) {        if (userName != null) {            System.out.println(&34; + userName);        } else {            System.out.println(&34;);        }    }}
Optional类介绍

Optional是JDK1.8推出的一个新的类,是一个没有子类的工具类,Optional可以理解为一个容器,其内部仅能存放一个对象元素或者存放null。它的作用主要就是为了解决避免Null检查,防止NullPointerException。

Optional的基本使用

Optional类的创建方式:

代码演示:

public static void test02() {    Optional<String> o1 = Optional.of(&34;);    // Optional<String> o2 = Optional.of(null); // 如果t为null会出现空指针异常    Optional<String> o3 = Optional.empty();    Optional<String> o4 = Optional.ofNullable(null);    System.out.println(&34; + o1);    // System.out.println(&34; + o2);    System.out.println(&34; + o3);    System.out.println(&34; + o4);}

运行效果:

o1 = Optional[小马]o3 = Optional.emptyo4 = Optional.empty

Optional类的常用方法:

代码演示:

public static void test03() {    Optional<String> o5 = Optional.of(&34;);    Optional<String> o6 = Optional.empty();    Optional<String> o7 = Optional.ofNullable(null);    // isPresent() : 判断是否包含值,包含值返回true,不包含值返回false。    if (o5.isPresent()) {        // get() : 如果Optional有值则将其返回,否则抛出NoSuchElementException。        String userName = o5.get();        System.out.println(&34; + userName);    } else {        System.out.println(&34;);    }    if (o6.isPresent()) {        String userName = o6.get();        System.out.println(&34; + userName);    } else {        System.out.println(&34;);    }    if (o7.isPresent()) {        String userName = o7.get();        System.out.println(&34; + userName);    } else {        System.out.println(&34;);    }}

运行效果:

用户名o5为:小马用户名o6为null用户名o7为null
Optional的高级使用

代码演示:

public static void test04() {    Optional<String> o8 = Optional.of(&34;);    Optional<String> o9 = Optional.empty();    // 存在做的什么    o8.ifPresent(s -> System.out.println(&34; + s));    o9.ifPresent(s -> System.out.println(&34; + s));}public static void test05() {    Optional<String> o10 = Optional.of(&34;);    Optional<String> o11 = Optional.empty();    // 如果调用对象包含值,返回该值,否则返回参数    System.out.println(&34; + o10.orElse(&34;));    System.out.println(&34; + o11.orElse(&34;));    // 如果调用对象包含值,返回该值,否则返回参数Supplier得到的值    String s10 = o10.orElseGet(() -> {return &34;;});    System.out.println(&34; + s10);    String s11 = o11.orElseGet(() -> {return &34;;});    System.out.println(&34; + s11);}

运行效果:

用户名o8为小程用户名o10为: 小序用户名o11为: 不存在数据11s10 = 小序s11 = 未知用户名
总结

Optional可以理解为一个容器,其内部仅能存放一个对象元素或者存放null。它的作用主要就是为了解决避免Null检查,防止NullPointerException。Optional的orElse,ifPresent,orElseGet等方法避免对null的判断,写出更加优雅简洁的代码。

本文内容由小德整理编辑!