不幸的是,我没有编写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;
}
}
Run Code Online (Sandbox Code Playgroud)
所以这是我的问题:
我想/希望如果有人能够为我提供第一个问题的答案,我将能够自己回答第二个问题.
说清楚:我知道输出是John Johnson;)但我不知道它为什么有效.