Можете ли вы сохранить переменную внутри предложения if?JAVA

Программисты JAVA общаются здесь
Anonymous
Можете ли вы сохранить переменную внутри предложения if?

Сообщение Anonymous »

Я как бы жду отрицательного ответа на этот вопрос.

Мне интересно, можно ли сохранить переменную одновременно с ее проверкой в предложении if.

Предположим, у меня есть этот код.

if(foo!=null){
if(foo.getBar()!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}
} else {
System.out.println("Failure.");
}


Теперь я обрабатываю состояния «отказа» независимо, даже если результат тот же. Я мог бы собрать их вот так:

if(foo!=null && foo.getBar()!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}


Код уже намного аккуратнее. если foo имеет значение null, он остановится на этом и не будет пытаться использовать foo.getBar (в if), поэтому я не получу NPE. Последнее, что я хотел бы улучшить, и главный вопрос: действительно ли я дважды вызвал foo.getBar()? Было бы неплохо отказаться от второго идентичного вызова, если бы getBar() был бы очень тяжелой операцией. Поэтому мне интересно, можно ли как-то сделать что-то подобное:

if(foo!=null && (Bar bar = foo.getBar())!=null){
Bar bar = foo.getBar();
System.out.println("Success: " + bar);
} else {
System.out.println("Failure.");
}


Мне пришлось бы снова разбить это на два разных «если», если бы я захотел это сделать

Bar bar = foo.getBar();
if (bar!=null) ...


Подробнее здесь: https://stackoverflow.com/questions/564 ... -if-clause

Вернуться в «JAVA»