作者tkcn (小安)
看板java
標題[問題] UnsupportedOperationException?
時間Mon Jan 25 13:25:18 2010
其實我對前幾天那篇很有興趣,
可是不知道為什麼沒有後續,文章也不見了 @_@
所以我就自己來冒名頂替一下吧。
// 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
→ tkcn:糟,我完全不知道 Orz 只好用當兵不在當理由了 XD 01/25 16:37
→ lovekkk:我弄錯問題...我覺得合理, 現有功能的刪減在現實中也常見 01/26 03:27
→ lovekkk:目的不外是拿現有的刪減比做新的省事吧? 01/26 03:28
→ lovekkk:不過感覺好像比較算是應變措施, 而不是特別設計成那樣 01/26 20:08