java中if函数判断空_还在用 if(obj != null)做非空判断?

本文介绍了如何使用Java8的Optional类来避免空指针异常,通过示例详细讲解了Optional的创建、get()、isPresent()、ifPresent()、filter()、map()、flatMap()、orElse()、orElseGet()、orElseThrow()等方法的用法,并提供了实战场景的应用,以提升代码的可读性和安全性。
摘要由CSDN通过智能技术生成

1. 前言

相信不少小伙伴已经被 java 的 NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨, 有大佬说过 “防止 NPE,是程序员的基本修养。”

但是修养归修养,也是我们程序员最头疼的问题之一,那么我们今天就要尽可能的利用 Java8 的新特性 Optional 来尽量简化代码同时高效处理 NPE(Null Pointer Exception 空指针异常)

2. 认识 Optional 并使用

简单来说,Opitonal 类就是 Java 提供的为了解决大家平时判断对象是否为空用 会用 null!=obj 这样的方式存在的判断,从而令人头疼导致 NPE(Null Pointer Exception 空指针异常),同时 Optional 的存在可以让代码更加简单,可读性跟高,代码写起来更高效.常规判断:

//对象 人//属性有 name,agePerson person=new Person();

if (null==person){

return "person为null";

}

return person;

使用 Optional:

//对象 人//属性有 name,agePerson person=new Person();

return Optional.ofNullable(person).orElse("person为null");

测试展示类 Person 代码 (如果有朋友不明白可以看一下这个):

public class Person {

private String name;

private Integer age;

public Person(String name, Integer age) {

this.name = name;

this.age = age;

}

public Person() {

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

}

下面,我们就高效的学习一下神奇的 Optional 类!

2.1 Optional 对象创建

首先我们先打开 Optional 的内部, 去一探究竟 先把几个创建 Optional 对象的方法提取出来

public final class Optional {

private static final Optional> EMPTY = new Optional<>();

private final T value;

//我们可以看到两个构造方格都是private 私有的 //说明 我们没办法在外面去new出来Optional对象 private Optional() {

this.value = null;

}

private Optional(T value) {

this.value = Objects.requireNonNull(value);

}

//这个静态方法大致 是创建出一个包装值为空的一个对象因为没有任何参数赋值 public static Optional empty() {

@SuppressWarnings("unchecked")

Optional t = (Optional) EMPTY;

return t;<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值