【发布时间】:2018-08-13 13:11:09
【问题描述】:
我有一个OptionalLong 的实例。但我的一个库需要Optional<Long> 作为参数。
如何将我的OptionalLong 转换为Optional<Long>?
我梦想着这样的事情:
OptionalLong secondScreenHeight = OptionalLong.of(32l); // or: OptionalLong.empty()
api.setHeight(secondScreenHeight.mapToRegularOptional()); // .mapToUsualOptional does not exist
【问题讨论】:
-
问题是为什么
OptionalLong没有map/filter等 -
api.setHeight(…)不应期望Optional<Long>作为参数类型。那你就不会有这样的问题了。 -
根本不要使用
Optional作为参数,无论是否通用。读起来很可怕。使用空的可选参数调用setHeight是什么意思?没做什么?然后,根本不要调用它。secondScreenHeight.ifPresent(api::setHeight)更有意义。 -
补充 Holger 已经指出的内容,这也是 IntelliJ 建议您的... ...Optional 旨在为库方法返回类型提供有限的机制需要一种明确的方式来表示“没有结果”。如果类需要可序列化,则使用 java.util.Optional 类型的字段也会有问题,which java.util.Optional is not.
-
为什么要在这里开启赏金?这个问题得到了很好的回答