作者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
1F:→ lovekkk:array 不能动态改变 size <- 这我觉得就是原因 01/25 16:00
2F:→ lovekkk: add -> 增加 size, remove -> 减少size 01/25 16:02
3F:→ lovekkk:原本的 array 都无法做出相对应的动作 01/25 16:02
4F:→ tkcn:这些我知道呀 :) 01/25 16:07
5F:推 TonyQ:以前我们讨论过啊 ?.? #19inc84F 01/25 16:30
6F:→ tkcn:糟,我完全不知道 Orz 只好用当兵不在当理由了 XD 01/25 16:37
7F:→ lovekkk:我弄错问题...我觉得合理, 现有功能的删减在现实中也常见 01/26 03:27
8F:→ lovekkk:目的不外是拿现有的删减比做新的省事吧? 01/26 03:28
9F:→ lovekkk:不过感觉好像比较算是应变措施, 而不是特别设计成那样 01/26 20:08