cod*_*Man 23 java conditional if-statement
这可能看起来像一个原始问题,或者可以通过我不知道的简单实用程序库方法来完成。
目的是检查嵌套在两个对象下的布尔字段的值。
private boolean sourceWebsite(Registration registration) {
Application application = registration.getApplication();
if (application == null) {
return true;
}
Metadata metadata = application.getMetadata();
if (metadata == null) {
return true;
}
Boolean source = metadata.getSource();
if (source == null) {
return true;
}
return !source;
}
Run Code Online (Sandbox Code Playgroud)
我知道这可以一次完成if()。if为了可读性,我在这里添加了多个。
有没有一种方法可以简化上面的if语句,并有一个简单的实用工具类返回Boolean source父对象是否为null的值?
ern*_*t_k 38
您可以通过java.util.Optional以下方式使用:
private boolean sourceWebsite(Registration registration) {
return Optional.of(registration)
.map(Registration::getApplication)
.map(Application::getMetadata)
.map(Metadata::getSource)
.map(source -> !source)
.orElse(Boolean.TRUE);
}
Run Code Online (Sandbox Code Playgroud)
简而言之,true如果任何getter返回null,则将返回它,!Metadata.source否则返回。
Kha*_*hah 15
如果其中任何一个为null,则以下内容将返回true。如果所有值都不为null,则返回!source。
private boolean sourceWebsite(Registration registration) {
return registration.getApplication() == null
|| registration.getApplication().getMetadata() == null
|| registration.getApplication().getMetadata().getSource() == null
|| !registration.getApplication().getMetadata().getSource();
}
Run Code Online (Sandbox Code Playgroud)
更新 :
如果您希望每个getter不被调用多次,则可以为每个对象声明变量,例如
private boolean sourceWebsite(Registration registration) {
Application application;
Metadata metadata;
Boolean source;
return (application = registration.getApplication()) == null
|| (metadata = application.getMetadata()) == null
|| (source = metadata.getSource()) == null
|| !source;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2032 次 |
| 最近记录: |