看板 java 關於我們 聯絡資訊
Hi 各位大神 小弟我在leetcode上面看一個solution for (int num : nums) { List<List<Integer>> newSubsets = new ArrayList(); for (List<Integer> curr : output) { newSubsets.add(new ArrayList<Integer>(curr){{add(num);}}); } 我其實看不太懂的是第四行裡 {{;}}這個表示法,我想問一下具體上這個在 語法上代表什麼意義,以及通常大概在哪個情境下比較會這樣寫 我用google找了,但是找不太到,不知道是不是我關鍵字下錯 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 24.17.20.101 (美國) ※ 文章網址: https://www.ptt.cc/bbs/java/M.1636829474.A.D91.html
ssccg: anonymous class + initializer block 11/14 03:26
ssccg: new ArrayList<Integer>(curr){ } 這是個anonymous class 11/14 03:28
ssccg: 應該看得懂吧,然後class裡面本來就有可以有initializer 11/14 03:28
ssccg: block,裡面寫的內容會自動複製到所有constructor中 11/14 03:30
ssccg: 比較常見的是另一個static initializer,因為沒有static 11/14 03:32
ssccg: constructor可以用,所以要初始化static member就會用到 11/14 03:32
ssccg: 兩個語法就只差在{ }前面有沒有static 11/14 03:33
ssccg: 至於本篇的用法什麼時候會用到,我個人是從來沒想過就為了 11/14 03:34
ssccg: 多呼叫一次add就去subclass ArrayList啦... 11/14 03:35
ssccg: 我會分三行寫 11/14 03:37
Nomadismo: 原來如此,感謝s大 11/14 04:20
chipnndale: 可以問一下是第幾題嗎? 11/21 19:34