80

我正在看一个寻路教程,我注意到方法return中的一个语句void(类PathTest,第 126 行):

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

我是Java的新手。谁能告诉我为什么它在那里?据我所知,return不允许使用 void 方法。

4

7 回答 7

146

它只是在此时退出该方法。一旦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
}
于 2009-04-13T17:30:28.023 回答
30

你可以有return一个 void 方法,你不能返回任何值(如return 5;),这就是他们称之为void方法的原因。有些人总是用 return 语句明确地结束 void 方法,但这不是强制性的。不过,它可以用来提前离开函数:

void someFunct(int arg)
{
    if (arg == 0)
    {
        //Leave because this is a bad value
        return;
    }
    //Otherwise, do something
}
于 2009-04-13T17:32:38.827 回答
25

该关键字只是从调用堆栈中弹出一个框架,将控件返回到函数调用之后的行。

于 2009-04-13T17:36:00.363 回答
14

Java 语言规范说,如果您的方法返回 void,则可以不带表达式地返回。

于 2009-04-13T17:32:53.930 回答
4

它退出函数并且什么也不返回。

类似的东西return 1;是不正确的,因为它返回整数 1。

于 2009-04-13T17:33:48.857 回答
3

它的功能与带有指定参数的函数的 return 相同,只是它什么都不返回,因为没有什么要返回,并且控制权被传递回调用方法。

于 2009-04-13T17:33:16.503 回答
2

看这个例子,你想有条件地添加到列表中。如果没有“return”这个词,所有的 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;
    }
}
于 2015-11-26T03:53:11.250 回答