我正在研究java中的项目,我正在为自定义组件开发API。我使用名为DrawHandler
的接口来允许组件绘制到图形对象。要在每次添加组件时执行此操作,我需要将其DrawHandler
添加到列表中。我正在使用此代码
public void addComponent(Component c){
//Add to list of components
components.add(c);
//Add all of the components drawHandlers so the component can be drawn
List<DrawHandler> dhs = c.getDrawHandlers();
Iterator<DrawHandler> i = dhs.iterator();
while(i.hasNext()){
addDrawHandler(i.next());
}
}
然而,当我在这一行收到错误时
Iterator<DrawHandler> i = dhs.iterator();
和这一行
addDrawHandler(i.next())
错误是:
next()的类型是错误的:其中E是一个类型变量: E扩展了在接口Iterator中声明的Object
如果我将此代码用作sugested
public void addComponent(Component c){
//Add to list of components
components.add(c);
//Add all of the components drawHandlers so the component can be drawn
for(DrawHandler handler : c.getDrawHandlers())
addDrawHandler(handler);
}
编译时出现此错误:
线程“main”中的异常java.lang.RuntimeException:无法编译的源代码 - 错误的树类型:windows.DrawHandler
在windows.MainWin.addComponent(MainWin.java:37)
在windows.Main.main(MazeNavigator.java:21)
任何建议?我究竟做错了什么?谢谢你的帮助
答案 0 :(得分:1)
它不能解释您的错误,但如果您编写
,您可能会发现它编译得很好for(DrawHandler handler : c.getDrawHandlers())
addDrawHandler(handler);
无法编译的源代码 - 错误的树类型:windows.DrawHandler
这意味着您正在使用一个允许您运行无法编译的代码的选项。我建议您关闭此选项,您应该看到错误的真正原因。