Подтвердить что ты не робот

Что делает ключевое слово return в методе void в Java?

Я смотрю учебник по поиску путей, и я заметил инструкцию return внутри метода void (класс PathTest, строка 126):

if ((x < 0) || (y < 0) || (x >= map.getWidthInTiles()) || (y >= map.getHeightInTiles())) {
    return;
}

Я новичок на Java. Может ли кто-нибудь сказать мне, почему это там? Насколько мне известно, return внутри метода void не разрешено.

4b9b3361

Ответ 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;
    }
}