Optional
Optional.of("javastack").orElseThrow(); // javastack // 1
8.12.1. of() 为非null的值创建一个Optional。
of方法通过工厂方法创建Optional类。需要注意的是,创建对象时传入的参数不能为null。如果传入参数为null,则抛出NullPointerException 。
Optional<String> name = Optional.of("netkiller"); if (name.isPresent()) { // 在Optional实例内调用get()返回已存在的值 System.out.println(name.get());// 输出 netkiller }
传入参数为null,抛出NullPointerException.
Optional<String> someNull = Optional.of(null);
8.12.2. ofNullable() 为指定的值创建一个Optional,如果指定的值为null,则返回一个空的Optional。
Optional<String> name = Optional.ofNullable("netkiller"); if (name.isPresent()) { // 在Optional实例内调用get()返回已存在的值 System.out.println(name.get());// 输出 netkiller } Optional<String> empty = Optional.ofNullable(null); if (empty.isPresent()) { System.out.println(empty.get()); }
8.12.3. isPresent 如果值存在返回true,否则返回false。ifEmpty() null 返回 true 否则返回 false
//isPresent方法用来检查Optional实例中是否包含值 if (name.isPresent()) { System.out.println(name.get()); }
ifEmpty() 与 ifPresent() 刚好相反
8.12.4. ifPresent() 如果Optional实例有值执行 lambda 表达式
如果Optional实例有值,调用ifPresent()可以接受接口段或lambda表达式。类似下面的代码:
Optional<String> name = Optional.ofNullable("netkiller"); name.ifPresent((value) -> { System.out.println("hello " + value); }); name.ifPresent((value) -> { System.out.println(value.length()); });
8.12.5. get() 返回值
如果Optional有值则将其返回,否则抛出NoSuchElementException。
Optional<String> name = Optional.ofNullable("netkiller"); System.out.println(name.get()); Optional<String> empty = Optional.ofNullable(null); try { System.out.println(empty.get()); } catch (NoSuchElementException e) { System.out.println(e.getMessage()); }
输出内容
ne