[英]Weird Erasure in Java Generics
我有以下界面:
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抱怨如下:
名称冲突: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:项目特定的编译器合规性级别设置:
之前的Java 6 @Override注释不允许实现接口,这可能就是发生的事情。 您可以尝试删除注释,它应该工作。 要正确修复eclipse项目属性中的源级别合规性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.