Java使用instanceof和迭代器
我有一个抽象类Usuario
和一个带有三个子类对象的ArrayList<Usuario>
。现在我想遍历ArrayList
,并根据对该对象使用instanceof
的结果返回一个值
我得到一个错误:java.util.NoSuchElementException
我想这是因为迭代器是Iterator
的对象,而不是来自Usuario
的任何子类。我说得对吗?有什么解决办法吗
public int comprobarDni(String dniAComprobar, ArrayList<Usuario> listaUsuarios) {
Iterator<Usuario> itUsuarios = listaUsuarios.iterator();
while (itUsuarios.hasNext()) {
if (dniAComprobar.equals(itUsuarios.next().getDni())) {
if (itUsuarios.next() instanceof UsuarioBiblioteca) {
return 1;
} else if (itUsuarios.next() instanceof Bibliotecario) {
return 2;
} else if (itUsuarios.next() instanceof BibliotecaExterna) {
return 3;
}
}
}
return 0;
}
# 1 楼答案
你的代码中有一个巨大的误解:
如果当前元素是
BibliotecaExterna
的实例,它将首先在If语句中调用next()
,并对照UsuarioBiblioteca
进行检查。但是,元素已经发生了变化而是在一开始就储存起来: