¿Por qué se repite una HashMap genérica recibido sólo se puede hacer con una mejora de bucle for?

Enlaces Rotem:

Me estoy poniendo en práctica un método putAll (). Traté de recorrer el mapa utilizando entrySet y iterador métodos, pero recibió un error de compilación que m.entrySet().iterator()el valor de retorno No se pudo convertir a Iterator<Entry<? extends K, ? extends V>>. ¿por qué? si el mapa es de ese tipo, es iterador debería ser así, ¿no?

¡gracias! no se compila:

@Override
public void putAll(Map<? extends K, ? extends V> m) {       
        Iterator<Entry<? extends K, ? extends V>> iter = m.entrySet().iterator();

    while (iter.hasNext()) {
        Entry<? extends K, ? extends V> entry = iter.next();
        put(entry.getKey(), entry.getValue());
    }
}

compila y funciona bien:

@Override
public void putAll(Map<? extends K, ? extends V> m) {
    Objects.requireNonNull(m, "putAll(): argument is null");

    for (Entry<? extends K, ? extends V> entry : m.entrySet()) {
        put(entry.getKey(), entry.getValue());
    }
}
Lino:

Cambio

Iterator<Entry<? extends K, ? extends V>> iter

A

Iterator<? extends Entry<? extends K, ? extends V>> iter

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=188129&siteId=1
Recomendado
Clasificación