不幸的是,我已经将Java编码了大约五年了,而且我完全记不起以下代码的工作原理。这是什么构造函数调用以下双括号?
我偶然发现了一个类似的例子,并将其分解为这个。重点是评论下面的部分:我没有得到构造函数表示法,后面跟着括号中的块。不幸的是,我无法在Java文档或使用Google中找到任何内容(我应该使用Google什么字词?)。
package syntaxtest;
public class Main {
public static void main(String[] args) {
// What kind of notation is this?
MyTest tester = new MyTest() {{
setName("John Johnson");
}};
System.out.println(tester.getName());
}
}
class MyTest {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
因此,这里是我的问题:
- 这是怎么符号/语法叫什么名字?
- 我可以在哪里阅读关于它的一些文档?
我想/希望如果有人能为我提供第一个问题的答案,我将能够自己回答第二个问题。
要说清楚:我知道输出是John Johnson
;)但我不知道它为什么工作。
当我第一次看到它在Usenet我不得不看它一会儿意识到发生了什么事了。一旦你知道它是什么,这是显而易见的。 – 2009-07-08 19:43:38
前段时间我看到了这个巧妙的技巧,但我也看到了很多免责声明,说很容易打破它的东西/不是很可靠。如果我要尝试使用它,我一定会考虑到A)我必须向每个人解释它,以便从那时起查看代码,并且B)我必须做一些研究了解使用这种模式的所有含义。 – 2009-07-08 20:20:53