我有这个接口(interface)及其实现。 Eclipse(Indigo Build id:20110615-0604,Windows 7 Starter 上的 jdk1.6.0_29)在一个项目中不会提示,但是一旦我将它们复制到另一个项目,它就会提示“名称冲突:方法 setChildren(List) 类型Node 具有与 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;
}
}
最佳答案
这是因为在该项目中您使用的 Java 版本 < 1.5。 Java 1.5 中添加了泛型。补救措施:右键单击项目
> 属性
> Java编译器
> 选择版本> = 1.5
如果您使用 java 1.4,就会发生这种情况:
当你切换到 Java 1.5 时,一切看起来都很好:
关于java - 当代码复制到另一个项目时,Eclipse 提示名称冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8398658/