Java Optional学习笔记

Optional 是Java 8之后引入的一个新的类型,用于表示一个可能为空的值。虽然它的设计目的是帮助程序员避免 null 异常,但是它的使用不当可能导致代码变得更难理解和阅读。

正确使用 Optional 的场景有:

1.用于返回值的场景,例如:从数据库中查询到一个可能不存在的值。

2.用于链式调用,例如:从一个对象中获取一个嵌套对象,如果存在才进行操作。

Optional其他用法:

  1. 使用orElseGet()和orElse()方法:如果值存在,返回值;如果不存在,返回一个默认值。

  1. 使用filter()方法:对存在的值进行过滤,如果满足特定条件,则返回该值;否则返回一个空的 Optional。

  1. 使用map()和flatMap()方法:将一个 Optional 中的值映射为另一个值,并返回一个新的 Optional。

总的来说,Optional 可以帮助程序员更好地处理 null 值,但是必须仔细考虑如何使用它,以免导致代码难以理解和维护。

好的,接下来让我们看看关于 Optional 的一些概念的代码示例。

  1. 使用orElseGet()和orElse()方法:

import java.util.Optional;

publicclassMain {
    publicstaticvoidmain(String[] args){
        Optional<String> optional = Optional.ofNullable("value");
        System.out.println(optional.orElseGet(() -> "default value"));
        System.out.println(optional.orElse("default value"));
    }
}

// 输出:// value// value复制代码

在上面的代码中,如果 Optional 存在值,orElseGet()和orElse()方法都会返回该值。

  1. 使用filter()方法:

import java.util.Optional;

publicclassMain {
    publicstaticvoidmain(String[] args){
        Optional<String> optional = Optional.ofNullable("value");
        optional.filter(value -> value.length() > 5)
                .ifPresent(System.out::println);
    }
}

// 输出:// value复制代码

在上面的代码中,filter()方法检查 Optional 是否满足特定的条件,如果满足,则返回该值;否则返回一个空的 Optional。

  1. 使用map()和flatMap()方法:

import java.util.Optional;

publicclass Main {
    publicstatic void main(String[] args) {
        Optional<String> optional = Optional.ofNullable("value");
        Optional<Integer> length = optional.map(String::length);
        System.out.println(length.orElse(-1));
    }
}

// 输出:
// 5复制代码

在上面的代码中,map()方法接收一个函数,并将该函数应用于 Optional 中的值,并返回一个新的 Optional。

希望这些代码能够帮助更好地理解Optional的概念。

作者:匹多莫德的传说

原文链接:https://juejin.cn/post/7197601367044522042

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值