简析JAVA8(一)之Optional【非空神器】

本文深入探讨了Java8中Optional类的功能与用法,通过多个示例解释如何使用Optional来避免空指针异常,包括使用Optional.ofNullable、Optional.of、Optional.isPresent、Optional.orElse和Optional.get等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不废话,上干货:

1、Optional类是一个包装非空对象的容器类型。

2、Optional对象使用缺失值表示null值,其表达的意思即为值有可能为null。

没错,JAVA8引入此类的目的就是为了在java系统中减少空指针异常。

使用实例一:

public Optional<Customer>findCustomerWithSSN(String ssn) { 
 
...
 
}
 
 
 
Optional<Customer> optional = findCustomerWithSSN(ssn);
 
 
 
if (optional.isPresent()) {
 
    Customercustomer = maybeCustomer.get();
 
    ... usecustomer ...
 
}
 
else {
 
    ...deal with absence case ...
 
}

使用实例二:

optional.ifPresent(ssn -> {
 
           String s = ssn.toUpperCase();
 
           System.out.println("The longest name is "+ s);
 
       });
 
 
 
findCustomerWithSSN(ssn).ifPresent(() -> 
 
    System.out.println("customerexists!"));

使用实例三:

Long value =findOptionalLong(ssn).orElse(0L);

注意的是:

不是为了避免所有的空指针类型机制。方法或构造函数输入参数强制性检查就仍然是有必要的。划重点!

在以下场景一般不建议使用Optional类。

领域模型层(非序列化)、数据传输对象(同上原因)、方法的输入参数、构造函数参数

 

在浏览其他大神的文章时看到这个例子,很典型。如下:

public static void main(String args[]) {
        Java8Tester java8Tester = new Java8Tester();
        Integer value1 = null;
        Integer value2 = new Integer(10);
        // Optional.ofNullable - 允许传递为 null 参数
        Optional<Integer> a = Optional.ofNullable(value1);
        // Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException
        Optional<Integer> b = Optional.of(value2);
        System.out.println(java8Tester.sum(a, b));
    }

    public Integer sum(Optional<Integer> a, Optional<Integer> b) {
        // Optional.isPresent - 判断值是否存在
        System.out.println("第一个参数值存在: " + a.isPresent());
        System.out.println("第二个参数值存在: " + b.isPresent());
        // Optional.orElse - 如果值存在,返回它,否则返回默认值
        Integer value1 = a.orElse(new Integer(0));
        //Optional.get - 获取值,值需要存在
        Integer value2 = b.get();
        return value1 + value2;
    }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值