不幸的是,我已經將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