Java中的Optional类小记

Java中的Optional类

Java中避免空指针异常的一个类,非常好用,适当使用,可以极大的优化代码逻辑,减少出错的概率

// 类静态方法
// 通过工厂方法创建Optional类,of需要确定有值,ofNullable的参数可以为null。
of()
ofNullable()



import java.util.Optional;

Optional<String> emptyOpt = Optional.empty();
Optional<String> emptyOpt1 = Optional.ofNullable(null);
Optional<String> emptyOpt2 = Optional.of("google");

System.out.println(emptyOpt.orElse("tencent"));
System.out.println(emptyOpt1.orElse("alibaba"));
System.out.println(emptyOpt2.orElse("baidu"));

// 是否有值判断
isPresent() 是否有值
ifPresent() 如果有实例才调用consumer,否则不做处理


// 访问
get() 确定有值才调用
orElse() 可以填默认值
orElseGet() 与orElse相似,区别在于生成默认值的方式不同
orElseThrow() 与get相似,区别在于可以跑出指定异常

// 处理
map() 有值的话调用mapping函数处理,否则不做处理
filter() 


// 使用if-else导致业务流程不清晰
Item Item = ...
if (Item != null) {
    String ItemName = Item.getItemName();
    if (ItemName != null) {
        return ItemName.toUpperCase();
    } else {
        return null;
    }
} else {
    return null;
}

// 使用Optional非常清晰
Item Item = ...
Optional<Item> ItemOpt = Optional.ofNullable(Item);

// 开启级联模式

return ItemOpt.map(Item::getItemName)
            .map(String::toUpperCase)
            .orElse(null);


// 错误使用
if(Item.isPresent()) {
  return Item.get().getOrders();
} else {
  return Collections.emptyList();

// 正确使用
return Item.map(u -> u.getOrders()).orElse(Collections.emptyList())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Optional类是Java 8引入的一个用于解决空指针异常问题的容器类。它可以包含一个非空的值,也可以表示为空。Optional类的设计目的是为了避免在代码频繁使用null值,从而提高代码的可读性和健壮性。 使用Optional类可以有效地处理可能为空的值,避免出现NullPointerException。它提供了一系列方法来判断Optional对象是否包含值,如果有值则可以通过get()方法获取该值,或者使用orElse()方法指定一个默认值。 下面是一个示例代码,演示了如何使用Optional类: ```java Optional<String> optionalValue = Optional.of("Hello World"); if (optionalValue.isPresent()) { String value = optionalValue.get(); System.out.println(value); } else { System.out.println("Value is absent"); } String defaultValue = optionalValue.orElse("Default Value"); System.out.println(defaultValue); ``` 在上面的代码,我们首先使用`Optional.of()`方法创建了一个包含非空值的Optional对象。然后通过`isPresent()`方法判断Optional对象是否包含值,如果有值则通过`get()`方法获取该值并输出。如果Optional对象为空,则输出"Value is absent"。 接下来使用`orElse()`方法指定了一个默认值,并输出该默认值。如果Optional对象包含值,则输出原始值;如果Optional对象为空,则输出指定的默认值。 使用Optional类可以有效地避免空指针异常,并提高代码的可读性和健壮性。它在编写Java代码时是一个非常有用的工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值