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

StackOverflow https://stackoverflow.com/questions/744676

  •  09-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

В этот момент он просто выходит из метода.Один раз 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 в методе void вы просто не можете вернуть любое значение (как в return 5;), поэтому они называют это пустота метод.Некоторые люди всегда явно завершают void-методы оператором return, но это не обязательно.Это может использовать для досрочного выхода из функции:

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

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

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

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

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

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

См. этот пример, который вы хотите добавить в список условно.Без слова «возврат» все if будут выполнены и добавлены в 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;
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top