這貌似是個不為人知的語言技巧。我看到一般人寫Java裡初始化靜態常數都是
複製代碼代碼如下:
public static final Map<String, String> DATA = new TreeMap<String, String>();
static
{
DATA.put("a", "A");
//blah blah blah
}
使用所在類別的static塊來初始化DATA,其實還有另一種寫法:
複製代碼代碼如下:
public static final Map<String, String> DATA = new TreeMap<String, String>()
{{
this.put("a", "A");
//blah blah blah
}};
這其實是利用了匿名類別的特性,內層的{是用來作匿名子類別的建構函數,所以可以直接插入初始化程式碼,這個小語言技巧不常見,但是比較實用。