zoukankan      html  css  js  c++  java
  • JDK8新属性Optional避免空指针异常

    jdk8新属性Optional避免空指针异常
    空指针异常或许是我们开发Java时遇到的最多的异常了,这是一个极其普遍又无法根治的问题。
    什么时空指针?
    当一个变量的值为null时,在Java里表示一个不存在的对象,没有实际内容,没有给他分配内存,null也是对象成员变量的默认值。
    Object object = null; String str = object.toString();
    如以上代码就会报空指针异常
    有很多方法或者平时的代码规范代码整洁可以尽最大可能的避免这种空指针异常,这里主要讲述jdk8的属性Optional来避免空指针和优化代码。提高代码整洁度。
    jdk8提供了Optional,一个可以包含null值的容器对象,可以用来代替 xx != null的判断
    这里我们新建实体类简单举例:
    User.java
    private String username;
    private String sex;
    private Address address;
    Address.java
    private String province;
    private String city;
    private Street street;
    Street.java
    private String number;
    这里假设我们要获取用户与之对应的number
    为了避免user.getAddress().getStreet()的空指针异常,我们可能会这么写:
        public String getUserNumber(User user){
            if(user != null){
                if(user.getAddress() != null){
                    if(user.getAddress().getStreet() != null){
                        return user.getAddress().getStreet().getNumber();
                    }
                }
            }
            return "默认值";
        }
    引用了Optional之后
        public String getUserNumber2(User user){
            return Optional.ofNullable(user)
                    .map(u -> u.getAddress())
                    .map(a -> a.getStreet())
                    .map(s -> s.getNumber())
                    .orElse("默认值");
        }
    可以进行链式的调用,而不是一层一层的判断了,,这个代码就很舒服了,Optional给我们提供了一个优雅简化的java风格来处理空指针异常,
    当然,处理空指针异常有很多方法,Optional也不仅这一种用途。

  • 相关阅读:
    mongodb修改和删除操作
    mongodb常用查询语句
    ejs常用功能函数
    Rails + React +antd + Redux环境搭建
    nodejs安装和卸载
    Git 建立仓库及常用命令速查表
    使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能
    gem devise配置
    Ubuntu16.04安装postgresql9.4及pgadmin3图形管理界面
    Rails Migration Data Model栏位修改及数据类型介绍
  • 原文地址:https://www.cnblogs.com/LiuFqiang/p/13879339.html
Copyright © 2011-2022 走看看