我在日食中遇到问题,以下四行分布在相应的四个文件中:
public interface I<T> {}
public interface ISpecial<T> extends I<T> {}
public class Base implements I<String> {}
public class Special extends Base implements ISpecial<String> {}
Eclipse告诉我(并且只有我和其他几个人都没有将相同的,稍微复杂的项目导入他们的工作区)
The interface I cannot be implemented more than once with different arguments: I<String> and I<String>
这是因为几天前我检查并安装了Eclipse更新(我几个月没做过),并更改了“Java编译器”设置对话框中的一些“错误/警告”设置(所以我不知道这些变化中的任何一个是否应该受到指责,但我已经将所有可能是“错误”的内容切换为“警告”并且问题仍然存在。)
我想巧妙地向Eclipse提交<String>
与<String>
不同的论点,但不知道我在这里错过了什么或者是否遗漏了什么。
更新:在将JDK编译器合规性级别设置为1.5(从1.7开始)后,问题在我创建的测试项目中消失了(使用上面的代码),但不是在更复杂的项目中它最初发生。在前者中,在将合规性级别再次设置为1.6或1.7之后问题没有回来,所以现在我自己再也无法用最小的例子重现问题,而没有解决原始问题本身。
答案 0 :(得分:1)
通常,问题是此类警告/错误未提及冲突类的完全限定名称。可以在类路径上有两个“String”类,“Base.java”导入第一个,“Special.java”导入第二个。检查你的导入:一个可能是java.lang.String,另一个可能来自不同的实现。