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


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

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

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

7 52

7 ответов:

Он просто выходит из метода в этот момент. Один раз 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
}

вы можете return в пустом методе, вы просто не можете возвращает никакого значения (например,return 5;), вот почему они называют это пустота метод. Некоторые люди всегда явно заканчивают методы void с помощью оператора return, но это не обязательно. Это можете используется, чтобы оставить функцию рано, хотя:

void someFunct(int arg)
{
    if (arg == 0)
    {
        //Leave because this is a bad value
        return;
    }
    //Otherwise, do something
}

ключевое слово просто выводит кадр из стека вызовов, возвращая элемент управления в строку после вызова функции.

язык Java спецификация говорит, что вы можете иметь return без выражения, если ваш метод возвращает void.

Он функционирует так же, как и функция return for с указанным параметром, за исключением того, что он ничего не возвращает, так как нечего возвращать, и управление передается обратно вызывающему методу.

Он выходит из функции и возвращает ничего.

что-то вроде return 1; было бы неверно, так как он возвращает целое число 1.

посмотреть этот пример, вы хотите добавить в список условно. Без слова "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;
    }
}