Named local classes are very rarely used, usually local classes are anonymous. Does anyone know why the code below generates a compiler warning?
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();
}
}
Warning is in new InIterator()and he says
[unchecked] unchecked conversion
found : InIterator
required: java.util.Iterator<E>
If the class, immutable, is made anonymous, or if it is made a member, the warning disappears. However, as a named local class, a declaration is required to declare a warning class InIterator<E> implements ....
What's happening?
source
share