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!

|