看板 java 關於我們 聯絡資訊
其實我對前幾天那篇很有興趣, 可是不知道為什麼沒有後續,文章也不見了 @_@ 所以我就自己來冒名頂替一下吧。 // Returns a fixed-size list backed by the specified array. Arrays.asList(T... a) 上面這個 method 會回傳一個 Arrays$ArrayList 物件, ArrayList 繼承自 AbstractList, 因為沒有 override add() 與 remove(), 所以一但執行 add() 或 remove(), 就會丟出 UnsupportedOperationException。 看起來一切都合情合理, 畢竟 Arrays$ArrayList 骨子裡是 Array, 要是能支援 add, remove 那才奇怪的勒 (java.util.ArrayList 內部雖然也是 Array,但是他始亂終棄) 讓我感到疑惑的是,這樣設計的目地到底是什麼? List 介面明明有提供 add, remove, 實作他的類別卻只會丟出 UnsupportedOperationException, 這樣是一個合理的 OO 設計嗎? 如果不是,那是否有什麼其他的考量呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.183.199
lovekkk:array 不能動態改變 size <- 這我覺得就是原因 01/25 16:00
lovekkk: add -> 增加 size, remove -> 減少size 01/25 16:02
lovekkk:原本的 array 都無法做出相對應的動作 01/25 16:02
tkcn:這些我知道呀 :) 01/25 16:07
TonyQ:以前我們討論過啊 ?.? #19inc84F 01/25 16:30
tkcn:糟,我完全不知道 Orz 只好用當兵不在當理由了 XD 01/25 16:37
lovekkk:我弄錯問題...我覺得合理, 現有功能的刪減在現實中也常見 01/26 03:27
lovekkk:目的不外是拿現有的刪減比做新的省事吧? 01/26 03:28
lovekkk:不過感覺好像比較算是應變措施, 而不是特別設計成那樣 01/26 20:08