Kay*_*ayV 2 java optional java-8 java-stream
我有一个包含嵌套和内部类的类.在某些程序中,我使用遗留java方式中的相等运算符检查对象的空值.以下是我的代码片段:
class Outer {
Nested nested;
Nested getNested() {
return nested;
}
}
class Nested {
Inner inner;
Inner getInner() {
return inner;
}
}
class Inner {
String foo;
String getFoo() {
return foo;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我如何对引用变量进行空检查:
Outer outer = new Outer();
if (outer != null && outer.nested != null && outer.nested.inner != null) {
System.out.println(outer.nested.inner.foo);
}
Run Code Online (Sandbox Code Playgroud)
我知道这也可以使用java 8的Optional类来完成,但是我没有办法在上面的特定场景中做同样的事情.有什么建议吗?
以下代码对我很有用:
Optional.of(new Outer())
.map(Outer::getNested)
.map(Nested::getInner)
.map(Inner::getFoo)
.ifPresent(System.out::println);
Run Code Online (Sandbox Code Playgroud)
我强烈建议你观看最近的Devoxx比利时演讲报告"可选 - 所有Bikesheds的母亲"作者Stuart Marks.Stuart描述了使用它的初始意图,最佳实践和不良实践.
特别是在字段中使用Optional,从演示文稿幻灯片中引用:
- 为什么不在字段中使用可选项?
- 风格问题多于正确性问题
- 在字段中使用Optional通常源于消除可空字段的盲目愿望.
- 记住,消除空值不是Optional的目标
- 在字段中使用可选..
- 为每个字段创建另一个对象
- 在每个字段读取时从内存引入依赖负载
- 弄乱你的代码
- 有什么好处?连锁方法的能力?
特别是你的例子:
outer != null检查?它刚刚被创造出来了!Nested情况需要成为其中的一部分Outer和Inner部分Nested有它们的构造函数的一部分,并与一些看守@NotNull代码或编程方式检查.| 归档时间: |
|
| 查看次数: |
3963 次 |
| 最近记录: |