当前位置: 首页 > news >正文

有关网站建设的合同银川网站开发培训

有关网站建设的合同,银川网站开发培训,南京模板网站开发,txt发布wordpresshello啊,各位观众姥爷们!!!本baby今天又来了!哈哈哈哈哈嗝🐶 Java中的Optional了解多少? 在 Java 中,Optional 是 Java 8 引入的一个容器类,用于显式处理可能为 null 的…

hello啊,各位观众姥爷们!!!本baby今天又来了!哈哈哈哈哈嗝🐶

Java中的Optional了解多少?

在 Java 中,Optional 是 Java 8 引入的一个容器类,用于显式处理可能为 null 的值,避免 NullPointerException(空指针异常)。它的核心思想是将“空值”包装成一个对象,通过链式调用强制本baby显式处理空值场景,提升代码的可读性和健壮性。


1. Optional 的核心设计

  • 不可变容器Optional 对象一旦创建,其内部的值不可修改。
  • 明确语义:通过方法名(如 isPresent()orElse())明确表达值的“存在性”和“默认值”逻辑。
  • 链式调用:支持函数式风格的链式操作(如 map()filter())。

2. 创建 Optional

方法描述
Optional.empty()创建一个空的 Optional 对象(值为 null)。
Optional.of(T)创建非空 Optional,若值为 null 会抛出 NullPointerException
Optional.ofNullable(T)创建 Optional,若值为 null,返回 Optional.empty()

示例

Optional<String> emptyOpt = Optional.empty(); 
Optional<String> nameOpt = Optional.of("叶文洁"); 
Optional<String> nullableOpt = Optional.ofNullable(getName()); // getName() 可能返回 null

3. 常用操作方法

(1) 检查值是否存在
方法描述
isPresent()判断值是否存在(非 null)。
isEmpty()判断值是否为空(Java 11+)。

示例

if (nameOpt.isPresent()) {System.out.println("Name: " + nameOpt.get());
}
(2) 获取值
方法描述
get()直接获取值,若值为 null 抛出 NoSuchElementException不推荐直接使用
orElse(T)值存在时返回值,否则返回默认值。
orElseGet(Supplier)值存在时返回值,否则通过 Supplier 生成默认值(延迟计算)。
orElseThrow()值存在时返回值,否则抛出指定异常(Java 10+)。

示例

String name1 = nameOpt.orElse("Unknown"); // 默认值
String name2 = nameOpt.orElseGet(() -> fetchDefaultName()); // 延迟计算
String name3 = nameOpt.orElseThrow(() -> new IllegalStateException("Name not found"));
(3) 链式操作
方法描述
map(Function)对值进行转换,若值为空,返回 Optional.empty()
flatMap(Function)类似 map,但 Function 需返回 Optional,避免嵌套 Optional
filter(Predicate)过滤值,若条件不满足,返回 Optional.empty()

示例

Optional<User> userOpt = Optional.ofNullable(user);
String email = userOpt.map(User::getAddress).map(Address::getEmail).orElse("no-email@luoji.com");

4. 使用场景与最佳实践

(1) 适用场景
  • 返回值可能为 null 的方法
    public Optional<User> findUserById(int id) {// 如果找不到,返回 Optional.empty()
    }
    
  • 链式处理嵌套对象:避免深层 if (obj != null) 检查。
  • 显式表达“空值”语义:强制调用方处理可能的空值。
(2) 避免的陷阱
  • 不要滥用 Optional

    • 不要用 Optional 作为方法参数或类的字段(违反设计初衷)。
    • 不要用 Optional 代替集合(如 Optional<List> 应直接用空集合 Collections.emptyList())。
  • 避免 isPresent() + get() 组合

    // 不推荐:
    if (opt.isPresent()) {String value = opt.get();
    }// 推荐:
    opt.ifPresent(value -> {...});
    

5. Java 9+ 的增强

Java 9 对 Optional 进行了扩展,新增方法:

方法描述
ifPresentOrElse()值存在时执行一个操作,否则执行另一个操作。
or()值存在时返回当前 Optional,否则返回另一个 Optional
stream()Optional 转换为 Stream

示例

nameOpt.ifPresentOrElse(name -> System.out.println("Name: " + name),() -> System.out.println("Name not found")
);

🐮🐎

  • Optional 的核心价值是强制开发者显式处理空值,减少 NullPointerException
  • 推荐链式操作(如 map()flatMap())代替直接检查 isPresent()
  • 避免滥用,仅用于方法返回值,而非参数或字段。
  • Java 9+ 提供更丰富的链式操作(如 ifPresentOrElse())。

正确使用 Optional 可以让代码更简洁、安全,但需结合场景合理选择其与传统的 null 检查。

在这里插入图片描述

http://www.dtcms.com/a/401805.html

相关文章:

  • 短视频素材下载网站 免费wordpress计算器插件
  • 深圳做网站报价专门做婚庆的网站有哪些
  • 做网站报价出名的淄博教育学校网站建设
  • 网站建设 讲话佛山网站优化服务
  • 重庆网站模板平台建设岳阳网站建设推广
  • 石河子网站建设wordpress做微信支付
  • 网站需要租服务器吗制定一个网络营销方案
  • 网站建设公司968wordpress照片墙
  • asp网站vps搬家微站设计
  • 黄岛网站建设设计公司旧衣收购哪个网站做的好
  • 北京网站建设备案代理磁力云搜索引擎入口
  • 海珠做网站公琼筑网站是哪家做的
  • 普陀区建设工程质检网站广告策划ppt案例
  • 宣城市建设监督管理局网站下载网站建设文档
  • 网站打开空白 重启iis就好了网页游戏排行榜前十名2021
  • 江苏优化网站博客新手wordpress
  • 电影网站html源码网络公关公司是做啥的
  • 菠萝菠萝蜜高清免费视频seo流量
  • 沧州网站建设王宝祥偷网站源码直接建站
  • 那个公司做网站网站开发前景怎么样
  • 网站没备案如何做淘宝客做PPT参考图片网站 知乎
  • 看电视剧的免费网站app下载html5电影网站源码php
  • 在线做ps是什么网站亩地 wordpress
  • 公司手机版网站模板免费下载新开传奇网站发布网
  • 威海网站优化大连建设网水电
  • jsp网站开发实例与发布免费网站开发合同
  • 学校网站的图片轮播怎么做直播网站是怎么做的
  • 餐厅网站建设什么wordpress图片备用地址
  • 无锡市住房和城乡建设部网站电子商务网站管理系统
  • 给别人做网站能赚钱吗线上营销渠道主要有哪些