应该是last return语句和非void返回类型方法吗?

Sur*_*nga 3 java return

应该使用last语句return和非void返回类型方法吗?但这仍然有效.

public String test()
{
    try
    {
        // Do my work
        return "myValue";
    }
    finally
    {
        System.out.println("I'm in Finally");
    }
}
Run Code Online (Sandbox Code Playgroud)

我有点缺乏了解这项工作的知识.有人能解释我吗?

das*_*ght 5

这段代码没有问题,因为通过它的每条可能的路径都不可避免地导致return声明*.它不必是文本上的最后一个语句,只要它是逻辑上的最后一个语句(Java编译器足够聪明,可以弄清楚它是否如此,如果有代码中的路径没有返回,则会给出错误)价值或抛出异常).在命中return(即你的finally块)之后会有代码执行的事实不会改变任何东西:就编译器而言,你的函数在退出函数之前提供了一个返回值.

*实际上,只有一条路径通过你的函数代码,它终止于return语句.