4

我有以下界面:

public interface Translator
{
    public <T, F> T translate(F from, T to, Class<T> clazz); 
}

以及以下实现:

class TranslatorImpl implements Translator
{
    @Override
    public <T, F> T translate(F from, T to, Class<T> clazz)
    {
        //some code
    }
}

但是对于类中的translate()方法TranslatorImpl,Eclipse 报错如下:

名称冲突:TranslatorImpl 类型的方法 translate(F, T, Class) 与 Translator 类型的 translate(F, T, Class) 具有相同的擦除,但不会覆盖它

更新:当我进行 Maven 构建时,它会正确构建。我使用JDK 1.6 update 31。Eclipse中的JDK合规级别是1.6

我该如何克服呢?

更新 2:

合规级别设置:在此处输入图像描述

安装的JRE:在此处输入图像描述

更新 3:我的.classpath文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java"/>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry combineaccessrules="false" kind="src" path="/dbmodel"/>
    <classpathentry combineaccessrules="false" kind="src" path="/uimodel"/>
    <classpathentry combineaccessrules="false" kind="src" path="/common"/>
    <classpathentry kind="var" path="MAXIMUS_DEV_DIR/resources/dependencies/java/log4j/log4j-1.2.16/log4j-1.2.16.jar"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

更新 4:项目特定的编译器合规级别设置: 在此处输入图像描述

4

1 回答 1

1

以前的 Java 6 @Override 注释不允许用于实现接口,这可能是正在发生的事情。您可以尝试删除注释,它应该可以工作。在 Eclipse 项目属性中正确修复检查源级别的合规性。

于 2012-04-14T10:02:00.667 回答