Con nombre local classes se usan muy raramente, por lo general, las clases locales son anónimas. ¿Alguien sabe por qué el código siguiente genera una advertencia del compilador?Java: clase local y genéricos, ¿por qué la advertencia del compilador?
public class Stuff<E> {
Iterator<E> foo() {
class InIterator implements Iterator<E> {
@Override public boolean hasNext() { return false; }
@Override public E next() { return null; }
@Override public void remove() { }
}
return new InIterator();
}
}
La advertencia está en new InIterator()
y dice
[unchecked] unchecked conversion
found : InIterator
required: java.util.Iterator<E>
Si la clase, sin cambios, se hace anónima, o si se hace un miembro, la advertencia desaparece. Sin embargo, como clase local con nombre, requiere una declaración class InIterator<E> implements ...
para que la advertencia desaparezca.
¿Qué está pasando?
Solo por curiosidad, mi compilador no se queja de esta advertencia ... ¿Qué JVM estás usando? –
Actualización de Sun Java 6 12 – Yardena