最后在java中返回

时间:2012-11-18 01:49:32

标签: java

在这种情况下,“myMethod()”会在“doSomething()”之前或之后执行吗?

public class Foo {
    public void fooMethod() {
        Bar bar = new Bar();
        bar.barMethod().myMethod();
    }
}

public class Bar {
    public SomeClass barMethod() {
        try {
            return new SomeClass();
        } finally {
            doSomething();
        }
    }
}

2 个答案:

答案 0 :(得分:6)

myMethod()doSomething之后执行,因为{/ 1}}在 doSomething返回其值给调用者之前执行

计算并准备返回值,然后barMethod块完整执行,然后调用者继续执行;这是在调用finally时。

答案 1 :(得分:0)

在myMethod()之前的

doSomething()

public class Test {

   public static void main(String[] a){
       new Foo().fooMethod();
   }

public static class Foo {

    public void fooMethod(){
        Bar bar = new Bar();
        bar.barMethod().parseInt("sc");
    }

}

public static class Bar {

    public Integer barMethod(){
        try {
            return new Integer(100);
        } finally {
            doSomething();
        }
    }

    private void doSomething(){
        System.out.println("doSomething");
    }

}
}

显示“doSomething”后崩溃了