在debug一段含有Enumeration对象的代码时候,为了看到Enumeration对象内的值,在原有循环外另外增加了一个循环来输出,结果增加后发现代码有异常出现。
经过调试发现,使用enu.nextElement依次输出值之后,enu。hasMoreElements变为了false,导致了正常的代码没有执行。
总结:错误的把Enumeration的循环当成了和List类似的循环,进行了两次循环导致的异常。
以后得注意
经过调试发现,使用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());
[color=red]for (int i = 0; enu.hasMoreElements(); i++) {
RefAddr addr = (RefAddr) enu.nextElement();
System.out.println(addr.getType()+" ,length=="+addr.getType().length()+",====="+addr.getContent());
}[/color]
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;
}
}
}