Что делает ключевое слово return в методе void в Java?
Я смотрю учебник по поиску путей, и я заметил инструкцию return
внутри метода void
(класс PathTest
, строка 126):
if ((x < 0) || (y < 0) || (x >= map.getWidthInTiles()) || (y >= map.getHeightInTiles())) {
return;
}
Я новичок на Java. Может ли кто-нибудь сказать мне, почему это там? Насколько мне известно, return
внутри метода void не разрешено.
Ответы
Ответ 1
Он просто выходит из метода в этот момент. После выполнения return
остальная часть кода не будет выполнена.
например.
public void test(int n) {
if (n == 1) {
return;
}
else if (n == 2) {
doStuff();
return;
}
doOtherStuff();
}
Обратите внимание, что компилятор достаточно умен, чтобы сообщить вам, что код не может быть достигнут:
if (n == 3) {
return;
youWillGetAnError(); //compiler error here
}
Ответ 2
У вас может быть return
в методе void, вы просто не можете вернуть какое-либо значение (как в return 5;
), поэтому они называют его методом void. Некоторые люди всегда явно закрывают недействительные методы с помощью оператора return, но это не обязательно. Его можно использовать, чтобы оставить функцию раньше, но:
void someFunct(int arg)
{
if (arg == 0)
{
//Leave because this is a bad value
return;
}
//Otherwise, do something
}
Ответ 3
Ключевое слово просто выталкивает фрейм из стека вызовов, возвращая элемент управления в строку, следующую за вызовом функции.
Ответ 4
Язык Java спецификация говорит, что вы можете вернуть без выражения, если ваш метод возвращает void.
Ответ 5
Он функционирует так же, как возврат для функции с указанным параметром, за исключением того, что он ничего не возвращает, так как возвращаться нечего и управление передается обратно вызывающему методу.
Ответ 6
Он выходит из функции и ничего не возвращает.
Нечто вроде return 1;
было бы неверным, так как оно возвращает целое число.
Ответ 7
См. этот пример, который вы хотите добавить в список условно. Без слова "return" все ifs будут выполнены и добавлены в ArrayList!
Arraylist<String> list = new ArrayList<>();
public void addingToTheList() {
if(isSunday()) {
list.add("Pray today")
return;
}
if(isMonday()) {
list.add("Work today"
return;
}
if(isTuesday()) {
list.add("Tr today")
return;
}
}