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

佛山购物网站建设线下推广渠道和方式

佛山购物网站建设,线下推广渠道和方式,建设一个公司网站,手机网站如何做营销在 Java 的函数式编程中&#xff0c;Optional<T> 是我们规避空指针的一大利器。而 orElse 和 orElseGet 是两个最常见的“备胎方法”。它们都能在 Optional 为空时提供默认值&#xff0c;但底层逻辑却大相径庭。&#x1f9e0; 一句话总结方法工作方式特点使用建议orElse立…

在 Java 的函数式编程中,Optional<T> 是我们规避空指针的一大利器。而 orElseorElseGet 是两个最常见的“备胎方法”。

它们都能在 Optional 为空时提供默认值,但底层逻辑却大相径庭


🧠 一句话总结

方法工作方式特点使用建议
orElse立即执行无论是否需要备胎,都会执行备胎代码轻量级默认值
orElseGet延迟执行只有在 Optional 为空时,才执行备胎代码重成本操作,比如查库、调接口等

🎯 通俗类比

方法名类比描述
orElse上来就干活备胎一上车就热车,即使没用上
orElseGet按需上岗真空才启动备胎,否则不吭声

🔍 底层机制对比

orElse(T other)

public T orElse(T other) {return value != null ? value : other;
}

🔥 无论 value 是不是 null,other 会先求值!


orElseGet(Supplier<? extends T> supplier)

public T orElseGet(Supplier<? extends T> supplier) {return value != null ? value : supplier.get();
}

🧊 如果 value != null,根本不会调用 supplier.get(),实现了惰性求值


🧪 代码实战演示

import java.util.Optional;public class OrElseVsOrElseGet {public static void main(String[] args) {Optional<String> present = Optional.of("Moonshot AI");// ---------- 1. orElse ----------String r1 = present.orElse(getDefault());   // 备胎直接执行!System.out.println("orElse 结果: " + r1);// ---------- 2. orElseGet ----------String r2 = present.orElseGet(() -> getDefault()); // 备胎沉默!System.out.println("orElseGet 结果: " + r2);}private static String getDefault() {System.out.println("🛠️ 备胎启动中...");try { Thread.sleep(1000); } catch (InterruptedException ignored) {}return "备胎本胎";}
}

🖨️ 控制台输出

🛠️ 备胎启动中...
orElse 结果: Moonshot AI
orElseGet 结果: Moonshot AI

虽然 Optional 不为空,但 orElse 还是执行了 getDefault()


⚠️ 场景速配表

备胎类型推荐方式示例代码
固定字符串 / 数值orElseorElse("默认值")
查询数据库 / 调远程接口orElseGetorElseGet(() -> dao.query())
复杂计算 / I/O 操作orElseGetorElseGet(() -> computeExpensiveResult())


✅ 使用建议

  • 优先使用 orElseGet,性能更稳健

  • orElse 仅适用于非常轻量的默认值(如常量、枚举等)

  • 写大型系统时,请避免 orElse(getSomethingBig()) —— 这相当于总是执行了备胎代码,违背了“按需执行”的初衷


📌 小结对比

方法是否惰性性能适用情况
orElse❌ 否慢(总执行)常量、字符串等
orElseGet✅ 是快(有值不执行)重操作、调用外部服务等

🔧 延伸:orElseThrow() 才是真正的终极方案

别忘了 Optional 还有个兄弟:

Optional.ofNullable(obj).orElseThrow(() -> new RuntimeException("缺数据!"));

没有值就直接抛异常,不玩备胎这一套

🧠 思维导图

Optional
├── orElse      --> 立即执行(无论是否用到)
├── orElseGet   --> 惰性执行(只在为空时)
└── orElseThrow --> 无值抛异常

📎 最佳实践总结

  • 💡 精度优先:能不用就别用 orElse

  • ⚙️ 逻辑清晰:看似相同的方法,可能有截然不同的运行代价

  • 🧪 多测试 Optional 的执行路径,避免隐藏的性能雷

http://www.dtcms.com/wzjs/133140.html

相关文章:

  • 网站建设可行分析性报告品牌建设
  • java做网站的好处深圳优化公司找高粱seo服务
  • 给网站公司做网站国家免费技能培训平台
  • 一个网站的建设流程有哪些百度认证官网申请
  • 网站开发是做什么的搜狗收录批量查询
  • wordpress 样式丢失百度seo多少钱一个月
  • 体育设施 网站模版云盘搜索引擎入口
  • 网站更改备案信息在哪竞价推广运营
  • app下载的视频为什么手机找不到网站推广优化网址
  • wordpress去除手机版页面重庆seo整站优化效果
  • 怎样制作网络平台石家庄seo公司
  • wordpress 大型站免费个人网站平台
  • 西安企业网站开发哪家好百度推广电话销售话术
  • 天津住房和城乡建设委员会网站百度百度一下一下
  • 套用模板网站品牌定位
  • 网站开发项目计划wbs网站点击排名优化
  • 昆明有几个区北京seo加盟
  • 做阿里还是网站精准引流的网络推广方法
  • 有了空间和域名 网站容易做吗微信公众号怎么开通
  • 保险平台seo如何优化排名
  • 中级经济师考试成绩查询刷百度关键词排名优化
  • 校园网站建设意义今天的病毒感染情况
  • 湖南网络公司网站建设链接交换平台
  • 徐州网站建设市场分析北京网站优化seo
  • 网站平台开发报价表怎么做2024年重大政治时事汇总
  • 网站建设与维护学什么科目怎么创建一个网站
  • 国外优秀电商设计网站搜索引擎优化的具体操作
  • 镇江扬中疫情最新情况优化培训课程
  • php网站微信登录怎么做百度开户推广
  • 三层架构做网站还是系统seo优化