六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 23|回复: 0

Enumeration的错误用法

[复制链接]

升级  30.67%

24

主题

24

主题

24

主题

秀才

Rank: 2

积分
96
 楼主| 发表于 2013-2-3 10:39:25 | 显示全部楼层 |阅读模式
在debug一段含有Enumeration对象的代码时候,为了看到Enumeration对象内的值,在原有循环外另外增加了一个循环来输出,结果增加后发现代码有异常出现。

经过调试发现,使用enu.nextElement依次输出值之后,enu。hasMoreElements变为了false,导致了正常的代码没有执行。

总结:错误的把Enumeration的循环当成了和List类似的循环,进行了两次循环导致的异常。
以后得注意

public static int find(String addrType, Reference ref) throws Exception {Enumeration enu = ref.getAll();System.out.println("enu.hasMoreElements()=="+enu.hasMoreElements());for (int i = 0; enu.hasMoreElements(); i++) {RefAddr addr = (RefAddr) enu.nextElement();System.out.println(addr.getType()+" ,length=="+addr.getType().length()+",====="+addr.getContent());}System.out.println("enu.hasMoreElements()=="+enu.hasMoreElements());for (int i = 0; enu.hasMoreElements(); i++) {RefAddr addr = (RefAddr) enu.nextElement();System.out.println(addr.getType()+" ,length=="+addr.getType().length()+",====="+addr.getContent());if (addr.getType().compareTo(addrType) == 0) {return i;}}}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表