java8特性 Optional 工具类

举报
whisperrr 发表于 2021/08/16 14:36:43 2021/08/16
【摘要】 对于Java开发中遇到的npe(空指针问题),其实使用工具类Optional处理效果一般,个人感觉最大的用处就是可以减少一定的if语句,减少一定的非空判断,千万不能将Optional放在if内,会非常多此一举。

  1. 关于Java8工具类Optional的一点使用心得

    对于Java开发中遇到的npe(空指针问题),其实使用工具类Optional处理效果一般,个人感觉最大的用处就是可以减少一定的if语句,减少一定的非空判断,千万不能将Optional放在if内,会非常多此一举。

  个人觉得最实用的例子:

    如果获取不到student的name属性(为空),那么将使用student的rename属性,即使rename、name为空,也不会出现空指针异常。

  import lombok.Data;

  import java.util.Optional;

  public class qwe {

  //java fhadmin.cn

  public static void main(String[] args) {

  Student student = new Student();

  student.setReName("tom");

  Student student1 = new Student();

  student1.setName( Optional.ofNullable(student.getName()).orElseGet(student::getReName)); //

  System.out.println(student1);

  }

  @Data

  static class Student{

  String name;

  String reName;

  }

  }

  2. 工具类

  package com.ven.utils;

  import java.util.ArrayList;

  import java.util.List;

  import java.util.Optional;

  /**

  * java 8 Optional 工具类

  * @author fhadmin

  * @from fhadmin.cn

  * @ version 1.0

  */

  public class OptionalUtil {

  /**

  * 判断输入的字符串是否为空

  * @param str String

  * @return

  */

  public static boolean isEmpty(String str){

  return Optional.ofNullable(str).isPresent();

  }

  /**

  * 判断输入的Integer是否为空

  * @param num Integer

    * @return

  */

  public static boolean isEmpty(Integer num){

  return Optional.ofNullable(num).isPresent();

  }

  /**

  * 判断输入的Double是否为空

  * @param dnum Double

  * @return

  */

  public static boolean isEmpty(Double dnum){

  return Optional.ofNullable(dnum).isPresent();

  }

  /**

  * 判断输入的Object是否为空

  * @param obj大连无痛人流医院 http://www.bhbyby.net/

  * @return

  */

  public static boolean isEmpty(Object obj){

  return Optional.ofNullable(obj).isPresent();

  }

  /**

  * 判断输入的List是否为空,获取该对象

  * @param obj

  * @return

  */

  public static Object get(Object obj){

  return Optional.ofNullable(obj).isPresent()!=false?Optional.ofNullable(obj).get():null;

  }

  /**

  * 测试

  * @param args

  */

  @SuppressWarnings("unchecked")

  public static void main(String[] args) {

  List list = new ArrayList<>();

  list.add("a");

  list.add("b");

  list.add("c");

  List objList = (List) OptionalUtil.get(list);

  objList.forEach(item->{System.out.println(item);});

  String str = null;

  System.out.println("当前对象:"+OptionalUtil.get(str));

  }

  }

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。