Collection框架设计的失误:Stack!

博客指出Java中Stack类是Collection设计的重大失误。Stack实现栈功能却继承了Vector,而Vector并非优质设计。Stack继承Vector后实现了List接口,但它并非List或Collection。现有设计可将Stack当Vector用,代码显得别扭,建议不要使用Stack类。

Stack是Java中Collection设计的重大失误,这个类绝对是垃圾,设计Stack这个类的人
当时一定是脑子发热了。众所周知,Stack实现的数据结构中的栈的功能,也就是后进先出,
看看Stack的声明吧:
public class Stack extends Vector

Vector就已经不是什么好东西了,这里还继承它?这里列出Stack中的方法,不考虑它的实现,
因为如果你要用这个东西,那我也无法可说。
public Object push(Object item)
public synchronized Object pop()
public synchronized Object peek()
public synchronized int search(Object o)
public boolean empty()

你可能会觉得这些方法没什么,可是当它继承了Vector,就意味着它没有价值了,不过这个类的
实现确实比较简单,有兴趣可以看看源码。我们知道Vector是实现了List接口的,Stack继承
Vector自然也实现了List接口。而事实上Stack不是List,甚至连Collection都不是。设计者是不是
为了节省代码呀才这样设计的呀,但是我们设计应该使接口最小化。如果这样也可以的话,
干脆Collection框架就用一个类实现好了!

Stack就应该只有上面几个方法,不应该有其他方法,而现有的设计可以把Stack当作Vector来用。
List stack = new Stack();
你看到这样的代码不会觉得很别扭吗?我强烈建议不要使用Stack!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值