java map是大括号_Java8如何基于flatMap处理异常函数

Java8的flatMap函数,作用是:如果有值,为其执行mapping函数返回Optional类型返回值,否则返回空Optional。

见到的映射函数往往都只有一句话,连大括号都不需要加的,如下:

String personValue = Optional.ofNullable(map.get("person"))

.flatMap(value -> Optional.of(value.toString().trim()))

.orElse("");

可是如果映射函数里,可能会抛出异常,该怎么办?

方法也是使用try/catch,但是一定要有返回值return,返回值类型是Optional。

public static void main(String[] args) {

Map map = new HashMap<>();

String value = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());

System.out.println(value);

map.put("time",value);

//原来的实现方法是

String timeValue = "";

if(map.get("time") != null){

try {

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(map.get("time").toString().trim());

timeValue = new SimpleDateFormat("yyyy年MM月dd日").format(date);

} catch (ParseException e) {

e.printStackTrace();

}

}

System.out.println(timeValue);

//使用Java8的实现方法是

String timeValue2 = Optional.ofNullable(map.get("time"))

.flatMap(value2 -> {

String ans = "";

try {

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value2.toString().trim());

ans = new SimpleDateFormat("yyyy年MM月dd日").format(date);

} catch (ParseException e) {

e.printStackTrace();

}

return Optional.of(ans);

}) .orElse("");

System.out.println(timeValue2);

}

上诉方法中, 可以把flatMap改成map,但是返回值的类型就不能是Optional了。应该是返回的值会自动被包装成Optional的。

//使用Java8的实现方法是

String timeValue2 = Optional.ofNullable(map.get("time"))

.map(value2 -> {

String ans = "";

try {

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value2.toString().trim());

ans = new SimpleDateFormat("yyyy年MM月dd日").format(date);

} catch (ParseException e) {

e.printStackTrace();

}

return ans;

}) .orElse("");

System.out.println(timeValue2);

这样看起来,使用lambda表达式,代码并没有优化多少啊?

应该是没有了null的判断,人们似乎很在意这个代码中不能有null这个词的说。

如果最后改成finally块,IDEA会出现警告,虽然结果没问题。这是因为finally块中最好不能有返回值。

f66c372edaca39b4ccc4d0278ea21a1a.png

Reports finally blocks which can not complete normally.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI 赛道“新选手”锐捷发布新一代 AI SaaS 云平台,支撑百万级零售货柜

编辑 | 宋慧 出品 | CSDN 云计算 头图 | 付费下载于 IC photo 近几年&#xff0c;传统零售模式经历了几轮深层次变革&#xff0c;2016 年是新零售的元年&#xff0c;2017 年无人零售在国内又刮起了一阵大风&#xff0c;从传统零售到新零售再到无人零售等概念的革新&#xff0c…

2019 年 CNCF 中国云原生调查报告

简介&#xff1a; 在 CNCF&#xff0c;为更好地了解开源和云原生技术的使用&#xff0c;我们定期调查社区。这是第三次中国云原生调查&#xff0c;以中文进行&#xff0c;以便更深入地了解中国云原生技术采用的步伐及如何在庞大且不断发展的社区中赋能开发者并作出变革。本报告…

mysql中的正向工程_Hibernate系列之正向工程

作用&#xff1a;可以依据hibernate正向工程生成库表结构spring-hibernate.xml文件中1 2 3 4 5 6 ${hibernate.hbm2ddl.auto}7 ${hibernate.dialect}8 ${hibernate.show_sql}9 ${hibernate.format_sql}10 11 hibernate的配置参数hibernate.hbm2ddl.autonone1、create如果设置为…

快手基于 Apache Flink 的优化实践

本次由快手刘建刚老师分享&#xff0c;内容主要分为三部分。首先介绍流式计算的基本概念&#xff0c; 然后介绍 Flink 的关键技术&#xff0c;最后讲讲 Flink 在快手生产实践中的一些应用&#xff0c;包括实时指标计算和快速 failover。 一、流式计算的介绍 流式计算主要针对 u…

探索交通治理新思路,广州黄埔智能交通治“堵”

路口车辆平均延误下降20%、主干道平均行程时间下降25%、有轨电车每趟行程时间节省约28%……随着政府科学管理与人工智能技术的结合&#xff0c;广州黄埔越来越多交通路口正在逐渐AI化&#xff0c;市民出行效率得以大幅提升。在共建共治共享理念指导下&#xff0c;广州黄埔正在拓…

Flink 双流 Join 的3种操作示例

在数据库中的静态表上做 OLAP 分析时&#xff0c;两表 join 是非常常见的操作。同理&#xff0c;在流式处理作业中&#xff0c;有时也需要在两条流上做 join 以获得更丰富的信息。Flink DataStream API 为用户提供了3个算子来实现双流 join&#xff0c;分别是&#xff1a; join…

java逻辑量_java – 增量逻辑

报价Java Language Specification, 15.7 Evaluation Order&#xff1a;The Java programming language guarantees that the operands of operators appear to be evaluated in a specific evaluation order, namely, from left to right.The left-hand operand of a binary op…

云原生趋势下的迁移与容灾思考

作者 | 孙琦 导读&#xff1a;下一个云原生颠覆的领域会不会是在传统的容灾领域呢&#xff1f;在云原生的趋势下&#xff0c;如何构建应用系统的迁移与容灾方案&#xff1f; 趋势 1. 云原生发展趋势 云原生&#xff08;Cloud Native&#xff09;是最近几年非常火爆的话题&…

深度盘点Python11个主流框架:Pandas、Django、Matplotlib、Numpy、PyTorch......

六月份TIOBE编程语言排行榜&#xff0c;位居第二名的Python与第一名C语言之间的差距正在逐渐缩小。Python如此受欢迎一方面得益于它崇尚简洁的编程哲学&#xff0c;另一方面是因为强大的第三方库生态。要说杀手级的库&#xff0c;很难排出个先后顺序&#xff0c;因为python的明…

从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目

2020 年 11 月 19 日&#xff0c;由 InfoQ 主办的“2020 中国技术力量年度榜单盛典”隆重召开&#xff0c;并正式揭晓了“开源杰出贡献人物”、“开源新锐项目”和“云原生行业落地典范”等重大奖项。在此前的入围赛中&#xff0c;仅“开源新锐项目”单项&#xff0c;阿里云原生…

java记录代码执行位置_记录执行的java代码的行号

PHP interperts的代码,这意味着它每次运行程序时运行源代码.随着代码的读取(这使得行号打印输出变得微不足道),这样做的好处就在于它.然而,由于您无法进行深入优化(或进行任何运行前错误检查),因此其它方式通常都是昂贵的.Java compiles its code into a JVM assembly language…

揭秘双11丝滑般剁手之路背后的网络监控技术

简介&#xff1a; 本篇将重点介绍Hologres在阿里巴巴网络监控部门成功替换Druid的最佳实践&#xff0c;并助力双11实时网络监控大盘毫秒级响应。 概要&#xff1a;刚刚结束的2020天猫双11中&#xff0c;MaxCompute交互式分析&#xff08;下称Hologres&#xff09;实时计算Flin…

OpenKruise:阿里巴巴 双11 全链路应用的云原生部署基座

简介&#xff1a; Kruise 是 Cruise 的谐音&#xff0c;K for Kubernetes&#xff0c;寓意 Kubernetes 上应用的航行和自动巡行&#xff0c;它满载着阿里巴巴多年在大规模应用部署、发布与管理最佳实践&#xff0c;以及阿里云 Kubernetes 服务数千客户的需求沉淀。 来源 | 阿里…

在java applet程序用户自定义的_在Java Applet程序用户自定义的Applet子类中

Applet类是浏览器类库中最为重要的类&#xff0c;同时也是所有java小应用程序的基本类。Apple类中只有一种格式的构造方法public Apple()&#xff0c;此种方法用来创建一个Apple类的实例。因此&#xff0c;在编写Applet程序时&#xff0c;首先必须引入java.applet.Applet包。 一…

AI 如何推动双碳目标达成?施耐德电气这么说

以当前的排放总量而言&#xff0c;中国是全球碳排放第一大国。如何兼顾经济转型与能源低碳转型成为国家重要的发展战略之一&#xff0c;因此中国提出 2030 年碳达峰以及 2060 年碳中和的目标&#xff0c;并被写进《政府工作报告》中&#xff0c;成为各行各业关注的热点话题。 …

轻松玩转全链路监控

简介&#xff1a; 好的产品总是能给予用户最轻松的使用体验&#xff0c;并在实际生产中发挥出巨大的业务价值。我们不妨从现在开始&#xff0c;就将所有微服务应用通过无侵入的方式接入ARMS&#xff0c;构建一体化的全链路监控体系&#xff0c;而不是等到真正遇到生产故障的那一…

深度解读 MongoDB 最全面的增强版本 4.4 新特性

MongoDB 在今年正式发布了新的 4.4 大版本&#xff0c;这次的发布包含众多的增强 Feature&#xff0c;可以称之为是一个维护性的版本&#xff0c;而且是一个用户期待已久的维护性版本&#xff0c;MongoDB 官方也把这次发布称为「User-Driven Engineering」&#xff0c;说明新版…

四大招让无处不在的工作空间成为可能?揭秘Ivanti 的战略布局

如今二维码已成为我们生活、工作的“必需品”&#xff0c;大家往往会通过简单扫码获取内容信息或进行交易。受疫情的影响&#xff0c;人们对非接触式交易需求增多&#xff0c;二维码的应用场景更无处不在。 与此同时&#xff0c;二维码带来的安全问题也受到人们的关注&#xf…

深度| 每秒1.4亿次!再度刷新TPS记录的PolarDB如何应对双11“尖峰时刻”?

2020年是云原生数据库PolarDB全面支撑天猫双十一的第二年&#xff0c;天猫交易、买家、卖家以及物流等系统在双十一期间基于PolarDB为亿万客户提供了顺滑的体验。同时&#xff0c;PolarDB还刷新了去年由自己创造的数据库处理峰值&#xff08;TPS&#xff09;纪录&#xff0c;今…

python协程等待执行完成_当循环运行时,如何运行协同程序并等待同步函数的结果?...

同步等待异步协同程序如果一个异步事件循环已经通过调用loop.run_forever运行&#xff0c;它将阻塞执行线程&#xff0c;直到loop.stop被调用[请参阅docs]。因此&#xff0c;同步等待的唯一方法是在一个专用线程上运行事件循环&#xff0c;在循环上调度异步函数&#xff0c;然后…