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

doSomething() before myMethod()

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");
    }

}
}

it crashes after displaying "doSomething"

于 2012-11-18T01:58:06.457 に答える