接口I不能用不同的参数实现多次:I <String>和I <String>

arn*_*e.b 6 java eclipse generics

我在日食中遇到问题,以下四行分布在相应的四个文件中:

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> {}
Run Code Online (Sandbox Code Playgroud)

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之后问题没有回来,所以现在我自己再也无法用最小的例子重现问题,而没有解决原始问题本身.

小智 1

通常,问题是此类警告/错误没有提及冲突类的完全限定名称。类路径上可能有两个“String”类,“Base.java”导入第一个类,“Special.java”导入第二个类。检查您的导入:一个可能是 java.lang.String,另一个来自不同的实现。