Optional.ofNullable()方法如何避免空指针异常?

2026-05-05 23:341阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计468个文字,预计阅读时间需要2分钟。

Optional.ofNullable()方法如何避免空指针异常?

javapublic static void main(String[] args) { List list=null; if (list !=null) { list.forEach(x -> System.out.println(x)); } else { System.out.println(List is null); }}

举个栗子

public static void main(String[] args) { List<String> list = null; list.forEach(x -> System.out.println(x)); }

工作中经常会遇到,查询返回空,如果没有判空处理,一不小心就会空指针异常。加上if判断处理也可以,但是jdk1.8有更优雅的处理方式。

public static void main(String[] args) { List<String> list = null; List<String> newList = Optional.ofNullable(list).orElse(Lists.newArrayList());
String s = null;

     String result = Optional.ofNullable(s).orElse("值为空“);

      newList.forEach(x -> System.out.println(x)); }

先解释代码含义:如果list集合不为空,将list集合赋值给newList;如果list集合为空创建一个空对象集合赋值给newList,保证list集合永远不为空,也就避免了空指针异常。(为了更好的理解,分开写了,比较庸俗,实际工作中都是一行搞定,哈哈哈)

再看看源码:底层是怎么处理的,怎么就避免了空指针呢?

Optional.ofNullable()方法如何避免空指针异常?

静态变量 empty private static final Optional<?> EMPTY = new Optional<>(); //如果对象为空,执行empty()方法;不为空,执行of(value)方法 public static <T> Optional<T> ofNullable(T value) { return value == null ? empty() : of(value); } public static<T> Optional<T> empty() { @SuppressWarnings("unchecked") Optional<T> t = (Optional<T>) EMPTY; return t; } public static <T> Optional<T> of(T value) { return new Optional<>(value); }

1.首先执行ofNullable()方法,如果T对象为空,执行empty()方法;不为空,执行of(value)方法;
2.empty()方法,初始化一个空对象Optional(空对象和null不是一回事哈);

3.of(value)方法,将泛型对象T用于Optional构造方法的参数上,返回一个有值的对象

4.经过上面两步,从而保证了Optional不为null,避免了空指针;

本文共计468个文字,预计阅读时间需要2分钟。

Optional.ofNullable()方法如何避免空指针异常?

javapublic static void main(String[] args) { List list=null; if (list !=null) { list.forEach(x -> System.out.println(x)); } else { System.out.println(List is null); }}

举个栗子

public static void main(String[] args) { List<String> list = null; list.forEach(x -> System.out.println(x)); }

工作中经常会遇到,查询返回空,如果没有判空处理,一不小心就会空指针异常。加上if判断处理也可以,但是jdk1.8有更优雅的处理方式。

public static void main(String[] args) { List<String> list = null; List<String> newList = Optional.ofNullable(list).orElse(Lists.newArrayList());
String s = null;

     String result = Optional.ofNullable(s).orElse("值为空“);

      newList.forEach(x -> System.out.println(x)); }

先解释代码含义:如果list集合不为空,将list集合赋值给newList;如果list集合为空创建一个空对象集合赋值给newList,保证list集合永远不为空,也就避免了空指针异常。(为了更好的理解,分开写了,比较庸俗,实际工作中都是一行搞定,哈哈哈)

再看看源码:底层是怎么处理的,怎么就避免了空指针呢?

Optional.ofNullable()方法如何避免空指针异常?

静态变量 empty private static final Optional<?> EMPTY = new Optional<>(); //如果对象为空,执行empty()方法;不为空,执行of(value)方法 public static <T> Optional<T> ofNullable(T value) { return value == null ? empty() : of(value); } public static<T> Optional<T> empty() { @SuppressWarnings("unchecked") Optional<T> t = (Optional<T>) EMPTY; return t; } public static <T> Optional<T> of(T value) { return new Optional<>(value); }

1.首先执行ofNullable()方法,如果T对象为空,执行empty()方法;不为空,执行of(value)方法;
2.empty()方法,初始化一个空对象Optional(空对象和null不是一回事哈);

3.of(value)方法,将泛型对象T用于Optional构造方法的参数上,返回一个有值的对象

4.经过上面两步,从而保证了Optional不为null,避免了空指针;