for (Object param : params) {
if (param == null) {
throw new ParamException("缺少参数");
}
}
像这样的非空判断,如果是换成一个包含 List 的 Optional 对象如何优雅的实现这个操作?
1
beny2mor 2018-10-26 10:54:08 +08:00
Optional 不适合包 List。List 如果为空就表示“ empty ”这个含义。 应该不存在接口会返回 null 值或空 List 吧
|
2
kaito 2018-10-26 10:55:38 +08:00
|
4
519718366 2018-10-26 11:48:59 +08:00
Optional 一般不会去包裹集合吧,一般在系统中,返回集合都是返回的空集合,不会去返回 null,阿里规约里也这么推荐的。
所以 Optional 一般包裹单个可能为空的对象。 |
5
honeycomb 2018-10-26 12:05:41 +08:00 via Android
|
6
shazh520 OP @honeycomb 明白了。 如果只是说明 optional 对象一般不用来包含 list 的话,就不如说 list 用 stream 接口是更好的选择。我刚刚开始研究 optional,所以掉坑了。现在对 optional 和 stream 又加深了一点认识。谢谢。
|
8
shazh520 OP 刚开始学习 optional,习惯性的想去重构非空判断,掉坑了。
|
9
TaoSama 2018-10-26 14:07:25 +08:00 via Android
可以看一下 Java 8 in Action 了解一些 best practice,这本书几天就能看完很薄
|
10
zealot0630 2018-10-26 15:00:56 +08:00
optional 的目的之一就是让你永远不需要用 null,你理解一下,再看看你的代码
|
11
abeholder 2018-10-26 15:17:33 +08:00
|
12
abeholder 2018-10-26 15:20:49 +08:00
接上楼 ,
而且我看这本书之前,学过段时间函数式编程 ,看到函子那一块就没怎么看了。。。 |