我有这个界面及其实现。 Eclipse(Indigo Build id:20110615-0604,Windows 7 Starter上的jdk1.6.0_29)并没有在一个项目中抱怨,但是一旦我将它们复制到另一个项目,就会抱怨“Name clash:方法setChildren(List)的类型节点具有与NodeInterface类型的setChildren(List)相同的擦除,但不会覆盖它“。
这两个项目位于同一个工作区中。我试过重新安装Eclipse但没有用。这是Eclipse问题还是代码根本错误?如何补救呢?
public interface NodeInterface {
public List<? extends NodeInterface> getChildren();
public void setChildren(List<? extends NodeInterface> children);
}
public class Node implements NodeInterface {
private List<Node> children = new ArrayList<Node>();
public List<? extends NodeInterface> getChildren() {
return children;
}
public void setChildren(List<? extends NodeInterface> children) {
this.children = (List<Node>) children;
}
}
答案 0 :(得分:1)
这是因为在那个项目中你是一个Java版本&lt; 1.5。 Java 1.5中添加了泛型。要解决问题:Right click on the project
&gt; Properties
&gt; Java Compiler
&gt; pick-up a version >= 1.5
如果你是在java 1.4中,那就是正在发生的事情:
当你切换到说Java 1.5时,一切看起来都不错: