莫生气 发表于 2013-2-3 10:39:25

Enumeration的错误用法

在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;}}}
页: [1]
查看完整版本: Enumeration的错误用法