Optional 是jdk1.8(新命名方式应该说 JDK8)推出的解决空指针问题的类,解决空指针这个说法不是准确,应该说是方便简洁处理空指针问题吧。毕竟jdk8推出了很多新语言使java语言编写程序更加简洁。 参考:https://www.jianshu.com/p/d81a5f7c9c4e
下边来看下Optional类的基本使用吧:
- 场景一: 返回Optional
- 返回非空对象 Optional.of(result)
- 返回可能为空的对象 Optional.ofNullable(student) Optional
a = Optional.ofNullable(value1); - 当对象为空时抛出异常 Optional.of(value2);
- 场景二:接受Optional对象,并作出理
直接返回对象,如果对象为空则返回默认值 Integer a = null; Integer B = new Integer(1); Integer value1 = a.orElse(new Integer(0)); Integer value2 = b.orElse(new Integer(0));
对结果做处理后返回 比如查询数据库后返回一个对象,这个对象可能为空,也可能存在。存在的情况下,我们返回名称。对象为空的情况下,我们返回空字符串。 String get Name(){ Optional
o1= findById(String id); return o1.map(value->value.getName).orElse(""); }
3.判断对象是否存在 ifPresent() 。 若存在返回true,否则false。 4.根据对象是否存在做处理 还可以接受一个消费接口函数入参来处理数据。 ifPresent()方法的源码: public void ifPresent(Consumer<? super T> consumer) { if (value != null) consumer.accept(value); } 使用: public static void printName(Student student) { Optional.ofNullable(student).ifPresent(u -> System.out.println("The student name is : " + u.getName())); }