我是 JAVA 新手,我遇到了以下代码片段。
我的问题是关于 2 个 setter 调用周围的大括号。
我在编码约定 http://www.oracle.com/technetwork/java/codeconventions-150003.pdf 中找不到任何内容这解释了这个代码片段。
除了限制 setter 调用的范围(但我无法理解这样做的必要性),我想不出大括号的任何原因,有人可以解释一下大括号的目的吗? (抱歉,我没有运气找到以前的问题)
Foobar foobar = FoobarManager.getFoobar();
{
foobar.setName("MyFoo");
foobar.setTimestamp(timestamp);
}
最佳答案
这是一个java初始化 block ,它将在构造函数的 super 调用之后工作,您可以执行下一个代码
public class Test {
public Test() {
super();
System.out.println("Hello");
}
{
System.out.println("Bye");
}
public static void main(String[] args) {
new Test();
}
}
如果你检查输出,结果是:
Bye
Hello
这是因为首先将执行 super 调用,之后将执行初始化 block ,然后执行构造函数的下一行。
如果您有许多构造函数并且您想要独立于执行哪个构造函数来执行某些代码行,这会很有帮助
关于Java 编码约定 - 这些花括号有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31010329/