使用hibernate我多次使用这种代码:
int someId = entity.getSomething() == null ? null : entity.getSomething().getId();
Run Code Online (Sandbox Code Playgroud)
尝试应用更长的层次结构时,此代码变得更加混乱:
int someId = entity.getParent() == null ? null :
entity.getParent().getParent() == null ? null :
entity.getParent().getParent().getSomething() == null ? null :
entity.getParent().getParent().getSomething().getId();
Run Code Online (Sandbox Code Playgroud)
有更优雅的方式吗?
根据Louis Wasserman的评论,Optional几乎可以用作NullObject a'la flogy的解决方案.
使用Java 8 Optional和lambdas看起来像这样
Integer value = Optional.ofNullable(entity)
.map( Entity::getParent )
.map( Entity::getParent )
.map( Entity::getSomething )
.map( Something::getId )
.orElse(null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1484 次 |
| 最近记录: |