终于不能按预期工作

驱魔

最终关键字实际上是如何工作的,我感到困惑...

在try块运行完成之前,它将返回到调用该方法的位置。但是,在返回调用方法之前,finally块中的代码仍然会执行。因此,请记住,即使try块中某处有return语句,finally块中的代码仍将执行。

当我运行代码时,我得到5而不是我期望的10

   public class Main {

    static int  count   = 0;
    Long        x;
    static Dog  d       = new Dog(5);

    public static void main(String[] args) throws Exception {
        System.out.println(xDog(d).getId());
    }

    public static Dog xDog(Dog d) {

        try {
            return d;
        } catch (Exception e) {
        } finally {
            d = new Dog(10);

        }
        return d;

    }
}

public class Dog {

    private int id;

    public Dog(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

}
塔吉尔·瓦列夫

finally块不是在return语句之前执行,而是在实际返回之前执行这意味着inreturn语句中的表达式是在执行finally块之前求值的。在您的情况下,在编写表达式时,return d将对d表达式求值并存储到寄存器中,然后finally执行该表达式并返回该寄存器中的值。无法更改该寄存器的内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

:not()不能按预期工作

来自分类Dev

:not()不能按预期工作

来自分类Dev

AutoResizeTextView不能按预期工作

来自分类Dev

getElementById不能按预期工作?

来自分类Dev

递归IEnumerable不能按预期工作?

来自分类Dev

jQuery slideDown不能按预期工作

来自分类Dev

递归函数不能按预期工作

来自分类Dev

Javascript RegExp'*'不能按预期工作

来自分类Dev

strtoul()不能按预期工作?

来自分类Dev

sendRedirect()不能按预期工作

来自分类Dev

$ nin与$ elemMatch不能按预期工作

来自分类Dev

whenAll()不能按预期工作

来自分类Dev

arraylist不能按预期工作

来自分类Dev

QGridLayout不能按预期工作

来自分类Dev

unset()不能按预期工作

来自分类Dev

onclick不能按预期工作

来自分类Dev

bcrypt nodejs不能按预期工作

来自分类Dev

NavigationManager不能按预期工作?

来自分类Dev

bcrypt nodejs不能按预期工作

来自分类Dev

getElementById不能按预期工作?

来自分类Dev

rsync不能按预期工作

来自分类Dev

jQuery has()不能按预期工作

来自分类Dev

blockUI不能按预期工作

来自分类Dev

seekg()不能按预期工作

来自分类Dev

XmiCasDeserializer不能按预期工作

来自分类Dev

ArrayAdapter不能按预期工作

来自分类Dev

$(“#form”)。submit(); 不能按预期工作

来自分类Dev

fork()不能按预期工作

来自分类Dev

jQuery slideDown不能按预期工作