我有一堆通用接口和类
public interface IElement { // omited } class Element implements IElement { // omited } public interface IElementListextends Iterable { public Iterator iterator(); } class ElementList implements IElementList { public Iterator iterator() { // omited } } public interface IElementListGroup > { public E getChosenElementList(); } class ElementListGroup implements IElementListGroup { public ElementList getChosenElementList() { // omited } }
然后是一个简单的代码
ElementListGroup group; for(Element e : group.getChosenElementList()) { // omited }
而对于关键字throwe的行"无法从元素类型Object转换为Element"编译器错误.
提前致谢.
IElementList
需要实施Iterable
.否则,接口指定Iterator iterator()
,而不是Iterator
.这使编译器认为您正在迭代Object
s.
我做了这个改变,它编译得很好(添加一些null返回后).