有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    你的代码中有一个巨大的误解:

    如果当前元素是BibliotecaExterna的实例,它将首先在If语句中调用next(),并对照UsuarioBiblioteca进行检查。但是,元素已经发生了变化

    而是在一开始就储存起来:

    Usuario element = itUsuarios.next();
    if(element instance of ...)
    ...