我试图理解Java 8中的可选API的ifPresent()方法。

我有简单的逻辑:

Optional user=...

user.ifPresent(doSomethingWithUser(user.get()));

但是这会导致编译错误:

ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here)

当然我可以这样做:

if(user.isPresent())

{

doSomethingWithUser(user.get());

}

但这完全像一个杂乱无章的检查。

如果我将代码更改为:

user.ifPresent(new Consumer() {

@Override public void accept(User user) {

doSomethingWithUser(user.get());

}

});

代码越来越脏,这让我想起了回到旧的null检查。

有任何想法吗?

java ifpresent_java – 正确使用Optional.ifPresent()相关推荐

  1. 【Java 8】教你用 Java 8中的 Optional 更优雅的判空

    引言 在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示 图片 在这种情况下,有如下代码 us ...

  2. java8 optional使用_[Java8]如何正确使用Optional

    Optional是Java8提供的为了解决null安全问题的一个API.善用Optional可以使我们代码中很多繁琐.丑陋的设计变得十分优雅.这篇文章是建立在你对Optional的用法有一定了解的基础 ...

  3. Java 8特性之Optional详解

    一.Optional类 简介 Optional类是 Java 8 引入的一个很有趣的特性.它主要解决的问题是臭名昭著的空指针异常(NullPointerException) Optional 类是一个 ...

  4. java 中覆 写tostring_如何在Java中正确覆盖toString()?

    如何在Java中正确覆盖toString()? 听起来有点愚蠢,但我需要帮助我的toString()方法,这是非常irking. 我尝试在网上查找,因为toString是搞砸了,"没有找到K ...

  5. java v_java -v报错 java -version正确

    如题:maven打包上传项目时报错 mvn deploy Error occurred during initialization of VM java/lang/NoClassDefFoundErr ...

  6. 学习 Java 的正确姿势

    2019独角兽企业重金招聘Python工程师标准>>> 关于学习 Java 的正确姿势,以下几点是网上看到的,觉得和我的想法差不多,于是分享一下.可能和时下有些人的想法大相径庭,但是 ...

  7. 学java的正确方法_学习Java编程 这10个技巧不容错过--中享思途

    这是一个国外大神20多年的经验总结出来的-- "任何可能出错的事情,最后都会出错." 这就是人们为什么喜欢进行"防错性程序设计"的原因.偏执的习惯有时很有意义, ...

  8. 【超全指南】Java 8 中使用 Optional 处理 null 对象

    作者:超级小豆丁 http://www.mydlq.club/article/88/ 系统环境: Java JDK 版本:1.8 参考地址: Oracle JDK API 参考文档 https://d ...

  9. Java JDK8新特性Optional类

    Optional类 1.该类java.util包下,是不能被继承的泛型类即:public final class Optional<T>. 2.该类有两个私有属性: T value和 静态 ...

最新文章

  1. OvS v.s. OvS-DPDK v.s. VPP
  2. bazel编译tensorflow 生成libtensorflow_inference.so 和 libandroid_tensorflow_inference_java.jar
  3. 秒杀系统设计的 5 个要点:前端三板斧+后端两条路!
  4. 微信抢红包应用要哭了,让我们来给微信红包设计一个新交互
  5. e2fsprogs制作嵌入式 mkfs.ext2 mkfs.ext3 mkfs.ext4
  6. NoSQL(2)之 Redis配置与优化
  7. Maven基础了解及配置信息
  8. junit 静态方法_预期异常规则和模拟静态方法– JUnit
  9. oracle11 rman全备,Oracle 11g非归档模式下mount状态RMAN究竟能不能进行全备?
  10. 高德地图画带箭头的线_模具装配图画成这样,那才真的叫标准!
  11. android开机自启动程序设置
  12. 飞鼠溪·狼(flying squirrel creek)-- BleedingWolves
  13. Excel连接MySQL数据库进行数据的可视化
  14. C++一本通在线测评网站 题目1224
  15. 20201216指数估值表
  16. python ffmpeg剪辑视频_FFmpeg精准时间切割视频文件
  17. Ceph分布式存储实战:从0搭建一个存储集群,并把块设备镜像映射到CentOS 7系统上的步骤
  18. rails 评论/回复插件 acts_as_commentable_with_threading
  19. 程序员吐槽培训班简历造假,经验包装竟拿到阿里外包26k的offer
  20. 小可爱怎么备份word自动图文集呢?

热门文章

  1. 类似visio的拓扑图节点连线控件免费下载
  2. golang实现单点登录
  3. openwrt之initramfs-kernel
  4. explicit c++
  5. STM32 CRH和CRL设置方向
  6. hdu1201 18岁生日(java版本)
  7. Android应用程序开发——创建应用程序
  8. [源码解析] PyTorch 流水线并行实现 (1)--基础知识
  9. IBM小型机发展史1980-2007
  10. 【C++】用递归函数实现Hermite多项式求值