Должен ли оператор return быть последней инструкцией в блоке кода?
Мне действительно нужна помощь в понимании того, что на самом деле означает недоступное утверждение в Java. У меня есть следующее ниже, и когда я пытаюсь скомпилировать, я получаю ошибку недостижимого утверждения. Я рассмотрел некоторые подобные вопросы о недостижимых утверждениях здесь, на Stackru, но ни один из них не ответил на мой вопрос. Я хочу знать, основываясь на том, как работают операторы return, почему эта версия не компилируется.
public int refundBalance()
{
return balance;
balance = 0;
}
Я спрашиваю об этом, потому что подобные вопросы здесь не дают мне ответа. Я предполагаю, что return должен быть последним утверждением в блоке кода, но я недостаточно разбираюсь в Java, чтобы быть уверенным в моем заключении. Таким образом, любые разъяснения будут с благодарностью.
5 ответов
Когда оператор return будет выполнен, что вы ожидаете дальше? Управление возвращается в вызывающую программу, и оператор после возврата никогда не может быть выполнен.
Похоже, вы действительно хотите реализовать эту функцию, которая, по-видимому, возвращает текущий баланс следующим образом:
public int refundBalance() {
int result = balance;
balance = 0;
return result;
}
Да return
оператор должен быть последним оператором в блоке кода. Если это не так, то любой код ниже этого никогда не будет достигнут, потому что return
оператор передает управление методу, который вызвал текущий метод (или finally
сначала заблокируйте, если он существует). Там нет смысла кодировать в блоке после return
заявление, так что это запрещено.
Чтобы это работало, вам нужно установить другую переменную для баланса, затем установить баланс в 0, а затем вернуть другую переменную.
return
оператор вызывает метод для выхода. Так что любое заявление после return
оператор в том же блоке кода никогда не будет выполнен. Вот почему вы получаете эту ошибку.
Мало того, что return
оператор диктует, что возвращает текущая функция, он также вызывает завершение функции. Поэтому заявление после return
действительно недоступен ни при каких обстоятельствах и не должен существовать.