吐槽 Java 8 的 Optional

2017-09-30 10:00:31 +08:00
 acr0ss

官方说是用于防止空指针的。
1.如果类的某个字段是 Optional,那就意味着 Nullable,会强制做 isPresent()判断是否为空
2.如果方法返回类型是 Optional,那就意味着 Nullable,也需要做 isPresent()判断是否为空

实际使用中,感觉对原有的返回类型,字段类型改动很大,所以没咋用。

同事却把这个 Optional 当成了炫技的手段。

一个为空的判断,只要 object == null 就可以;
同事却一直使用

!Optional.ofNullable(object).isPresent()  

同理非空判断是

Optional.ofNullable(object).isPresent()

哎呦我去,这个绕。

---吐槽します---

7379 次点击
所在节点    Java
32 条回复
teek
2017-09-30 14:13:12 +08:00
honeycomb
2017-09-30 14:19:27 +08:00
仅仅是单个用 Optional.isPresent,确实如楼主所说没意思。

比较合适的用法是
@chocotan @hantsy

类似的:
吐槽します --> ツッコミします 会比较合适,前者就有些像单用 Optional.isPresent 了,吐槽密达同理。
pynix
2017-09-30 14:27:03 +08:00
哈哈哈
acr0ss
2017-09-30 16:40:32 +08:00
@BoiledEgg 学到了 谢谢
acr0ss
2017-09-30 16:40:55 +08:00
@honeycomb 哈啊哈
不用在意这个
acr0ss
2017-09-30 16:42:19 +08:00
@huangchang250 you got it
acr0ss
2017-09-30 16:44:10 +08:00
@hantsy 大胸弟,我没说不用 stream 好吧。 你这随便喷的口气改一改,谢谢!
misaka19000
2017-09-30 16:45:33 +08:00
不应该用 shi mashida 嘛。。。
acr0ss
2017-09-30 16:51:01 +08:00
@misaka19000 给各位日语大佬递茶
crash
2017-09-30 18:17:27 +08:00
用过 swift 的表示,optional 没楼上那么复杂。使用 optional 并不需要知道 RX 系列。
hantsy
2017-10-01 12:04:12 +08:00
@acr0ss 常常忍不住一些看法,谅解。

RxJava `Maybe` 和 Reactor `Mono` 才是 Optional 想要变成的样子,只是 Java Optional 生的太早。Java 9 Flow API 直接 Copy 了 ReactiveSteams JVM 的 API,提供了一个简单的实现。
troywinter
2017-10-07 11:43:13 +08:00
从 optional 扯到 stream 和 rx 也是醉了,你们要不要继续扯扯 monad。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/394785

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX