Java 1.7 представляет класс java.util.Objects
( эта ссылка взята из Java 11 JavaDo c, но здесь это не имеет значения).
Этот класс предоставляет методы Objects.isNull()
и Objects.nonNull()
, которые могут использоваться в вашем коде следующим образом:
import static java.util.Objects.*;
…
private String prepareMessage(Scope scope) {
if (nonNull (scope)) {
if (nonNull (scope.getPermission())) {
if (nonNull (scope.getInfo())) {
return "Successful";
} else {
return "Missing field Info";
}
} else if (nonNull (scope.getInfo()) {
return "Permission field not provided";
}
}
return "Permission and Info fields not provided";
}
Конечно, выглядит это лучше или нет, это вопрос вкуса.
Альтернативные логики c могут выглядеть так (для Java 11):
import static java.util.Objects.*;
…
private String prepareMessage( Scope scope )
{
var messages = { "Successful", "Missing field Info", "Permission field not provided", "Permission and Info field not provided" };
var index = 0;
var retValue = messages [3]; // No scope at all
if( nonNull( scope ) )
{
if( isNull( scope.getPermission() ) ) index += 2;
if( isNull( scope.getInfo() ) ) index += 1;
retValue = messages [index];
}
return retValue;
}
Я не хочу сказать, что это действительно лучше, в любом случае, это просто другое. И это избавляет от одной нулевой проверки ...