这个带有以下双大括号的构造函数调用是什么?
不幸的是,我已经有五年没有编写Java代码了,我绝对不记得下面的代码是如何或为什么工作的。
我偶然发现了一个类似的例子,并将其分解为这个。重点是注释下面的部分:我没有得到构造函数符号,后面跟着双括号中的块。不幸的是,我无法在Java文档或使用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