- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在Java中,我最近开始采用Optional
在我的代码中输入更多内容。这可以实现更好的null
-值处理以及在某种程度上也更安全的代码。 Optional
有ifPresentOrElse
方法,允许您在存在值时执行特定操作,或在不存在值时执行特定操作。但是,此方法不允许您声明返回类型。
有没有一种简单的方法可以使用选项和 ifPresentOrElse
类似方法,在解包 Optional
时返回值?
最佳答案
假设以下声明(编辑:注意Consumer
和Runnable
是来自@ImJustACowLol self 回答的接口(interface),而不是java.util
接口(interface)。对于 self 回答被删除的情况,接口(interface)与 java.util 中的接口(interface)相同,只是功能接口(interface)方法具有通用返回类型而不是 void 。无论如何命名应该选择不同的方式。):
Consumer<InputType, OutputType> yourConsumer = ...;
Runnable<OutputType> yourRunnable = ...;
Optional<InputType> yourOptional = ...;
您可以编写以下语句
OutputType result = yourOptional.map(yourConsumer).orElseGet(yourRunnable);
这确实不适合单个方法调用,但恕我直言,尽管仍然足够简洁和可读。
关于JavaOptional.ifPresentOrElse 带返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60839318/
这个问题已经有答案了: Java 9 ifPresentOrElse returning value (1 个回答) Java 8 optional: ifPresent return object
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 3 年前。 Improv
1/工作代码: public Student process (int id, name){ Optional studentOpt = myrepo.findById(id); studen
我正在尝试从对象中获取一些数据。我有一小段代码,其中: UserAccessValidator 只是一个 validator ,validateAccessToAccount 方法采用 Long,并且
给定代码: Optional myOptional = getMyOptional(); myOptional.ifPresentOrElse( s -> Optional.ofN
我对“如何正确地做到这一点”有点困惑: // return true: if present and number of lines != 0 boolean isValid(Optional
我是一名优秀的程序员,十分优秀!