3

在这种情况下,“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();
        }
    }
}
4

2 回答 2

6

myMethod()之后 执行,doSomething因为在之前doSomething执行将其值返回给调用者。 barMethod

该值被计算并准备好返回,然后整个finally块执行,只有这样调用者才能继续;这是myMethod被调用的时候。

于 2012-11-18T01:51:22.107 回答
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”后崩溃

于 2012-11-18T01:58:06.457 回答