命名爲local classes很少使用,通常本地類是匿名的。有誰知道爲什麼下面的代碼會生成編譯器警告?Java - 本地類和泛型,爲什麼編譯器警告?
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();
}
}
警告是new InIterator()
和它說
[unchecked] unchecked conversion
found : InIterator
required: java.util.Iterator<E>
如果類,不變的,是由匿名,或者如果它是由一個成員,警告消失。但是,作爲已命名的本地班級,它需要聲明class InIterator<E> implements ...
以使警告消失。
發生了什麼事?
只是出於好奇,我的編譯器不會抱怨這個警告......您使用的是什麼JVM? – 2009-04-21 14:57:06
Sun Java 6更新12 – Yardena 2009-04-21 15:54:49