2012-04-14 81 views
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 
    } 
} 

但在TranslatorImpl类的translate()方法,Eclipse的笙歌如下:

名称冲突:方法翻译(F,T,类)的类型 Tr anslatorImpl具有相同的擦除作为 型翻译的翻译(F,T,A类),但不覆盖它

更新: 当我做一个Maven构建它建立正常。我使用JDK 1.6更新31. Eclipse中的JDK合规性级别为1.6

我该如何克服这一点?

更新2:

的级别设置:enter image description here

安装JRE:enter image description here

更新3:

<?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:项目的具体编译我的.classpath文件的内容合规等级设置: enter image description here

+2

适用于我的作品。你使用什么编译器? – Joni 2012-04-14 09:28:11

+0

除非您打算提供null作为第二个参数,否则不需要第三个参数。 – EJP 2012-04-14 09:30:58

+0

这是创建问题的Eclipse。当我做一个Maven构建时,它会正确构建。我使用JDK 1.6更新31. Eclipse中的JDK合规性级别为1.6 – 2012-04-14 09:33:13

回答

1

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

+0

我正在使用JDK 1.6。 Eclipse 3.7。编译器合规性级别:1.6 – 2012-04-14 10:11:04

+0

源代码还是二进制代码?在项目上或日食广?请详细说明你是如何知道complience是1.6的。 – hgrey 2012-04-14 10:16:56

+0

@hgrey ...看到我的更新。请告诉我,我是否缺少任何东西。 – 2012-04-14 10:25:25