【发布时间】:2017-09-10 17:03:52
【问题描述】:
为什么 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
【问题讨论】:
-
“这个订单有具体原因吗?” - 在 JLS 15.9.4 中有解释 - docs.oracle.com/javase/specs/jls/se8/html/…
标签: java curly-braces order-of-execution