JAVA裏使用雙括號來初始化靜態常量

這貌似是個不爲人知的語言技巧。我看到一般人寫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

}};

這實際上是利用了匿名類的特性,內層的{是用來作匿名子類的構造函數,所以可以直接插入初始化代碼,這個小語言技巧不常見,但是比較實用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章