void方法中的return语句

时间:2012-06-11 23:45:09

标签: java

我有以下返回void的方法,我需要在另一个也返回void的方法中使用它。 我可以这样做吗?

public void doSomething(){}

public void myMethod()
{
    return doSomething();
}

感谢你的所有评论,但让我更具体一点

如果发生某事我只会doSomething,否则我会做其他事情

public void doSomething(){}

public void myMethod()
{
    for(...)
        if(somethingHappens)
        {
            doSomething();
            return;
        }

    doOtherStuff();
}

我可以在if语句中编写return doSomething();而不是上面的代码吗?

5 个答案:

答案 0 :(得分:14)

不,只需这样做:

public void doSomething() { }

public void myMethod()
{
    doSomething();
}

或在第二种情况下:

public void doSomething() { }

public void myMethod()
{
    // ...
    if (somethingHappens)
    {
        doSomething();
        return;
    }
    // ...
}

“返回无效”意味着什么都不返回。如果您想“跳出”myMethod的正文,请使用return;编译器不允许编写return void;(“非法表达式开头”)或return doSomething(); (“无法从结果类型为void的方法返回值”)。我理解返回方法调用的“void”或“void result”似乎是合乎逻辑的,但是这样的代码会产生误导。我的意思是大多数阅读类似return doSomething();之类的程序员会认为有某些东西要返回。

答案 1 :(得分:5)

void函数不会/不能返回任何内容。只需调用该功能。

答案 2 :(得分:2)

不,Java void functione中不需要返回。相反,这样做:

public void myMethod(){
    doSomething();
}

如果你愿意的话,你可以在doSomething()之后放一个回报,但正如我所说,这是不必要的。

答案 3 :(得分:0)

您必须像其他人指出的那样使用doSoemthing OR

public (insert data type like int, double, string, etc) myMethod()
{
     return doSomething();
}

如果做某事返回int

// if you wanted to take 2 numbers and add them

public void myMethod()
{
    valueOfX+Y = doSomething();
}

public int doSomething()
{
    x = 2;
    y = 2;
    return X+Y;
}

希望清除它

答案 4 :(得分:0)

如果

  • 条件(somethingHappens)实际上取决于doSomething()做了什么
  • doSomething()是一种可以修改的方法

然后你应该考虑让它返回boolean(或任何合适的类型)值,告诉被调用方法它是否发生。

代码看起来有点像这样:

public boolean doSomething() {
    // internal working
    if (internalCondition) {
         // something done here
         return true;
    }
    // not done ;
    return false;
}

public void myMethod()
{
    for(...)
        if (doSomething())
        {
            return;
        }
    // didn't hit 'doSomething() == true'
    doOtherStuff();
}