【发布时间】:2010-10-20 20:24:29
【问题描述】:
命名local classes 很少使用,通常本地类是匿名的。有人知道为什么下面的代码会产生编译器警告吗?
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?
标签: java generics inner-classes