只有卷曲括号的方法

时间:2017-04-14 12:26:30

标签: java curly-braces order-of-execution

为什么Java只接受括号方法?是为了什么?

{
    // Do something
}

我还注意到它是在static-block之后但在构造函数之前自动执行的。虽然之前执行了超类的构造函数。

此订单是否有特定原因?

这是我发现执行顺序的JUnit

public class TestClass extends TestSuperClass {

    public TestClass() {
        System.out.println("constructor");
    }

    @Test
    public void test() {
        System.out.println("test");
    }

    {
        System.out.println("brackets");
    }

    static {
        System.out.println("static");
    }
}
public class TestSuperClass {

    public TestSuperClass() {
        System.out.println("super class constructor");
    }

    {
        System.out.println("super class brackets");
    }

    static {
        System.out.println("super class static");
    }
}

作为输出我得到:

super class static
static
super class brackets
super class constructor
brackets
constructor
test

1 个答案:

答案 0 :(得分:2)

它与静态块相同,但不是静态的。因此它将按照您已经发现的顺序执行 - 在超级构造函数之后但在构造函数之前。但是,如果static-block可以使用常规块而不是那么多。所以它永远不会被使用,但它是合法的。我从来没有看到它被使用过,也没有想到任何特定目的,但它是有效语法的一部分。如果不是那么静态阻止也不会。

相关问题