首页
论坛
图书
开发资料
在线文档
网址
下载
联系我们
 新闻│Java│JavaScript│Eclipse│Eclipse 英文│J2EE│J2ME│J2SE│JSP│Netbeans│Hibernate│JBuilder│Spring│Struts
站内搜索: 请输入搜索关键词

当前页面: 开发资料首页 → Java 专题 → Collection框架设计的失误:Stack!

Collection框架设计的失误:Stack!

摘要: Collection框架设计的失误:Stack!

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="270" height="86" align="center" valign="top"> </td> <td width="414" valign="top">

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!

</td></tr> <tr> <td height="20" colspan="2">


</td> </tr> </table>
</td> </tr> <tr>


↑返回目录
前一篇: Java程序设计中的接口
后一篇: 浅谈Java的输入输出流

首页 | 全站 Sitemap | 联系我们 | 设为首页 | 收藏本站
版权所有 Copyright © 2006-2007, Java 编程资料牛鼻站, All rights reserved