加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java泛型中奇怪的擦除

发布时间:2020-12-15 02:33:16 所属栏目:Java 来源:网络整理
导读:我有以下界面: public interface Translator{ public T,F T translate(F from,T to,ClassT clazz); } 以及以下实施: class TranslatorImpl implements Translator{ @Override public T,ClassT clazz) { //some code }} 但是对于TranslatorImpl类中的transl
我有以下界面:

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

以及以下实施:

class TranslatorImpl implements Translator
{
    @Override
    public <T,Class<T> clazz)
    {
        //some code
    }
}

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

Name clash: The method translate(F,T,Class) of type
TranslatorImpl has the same erasure as translate(F,Class) of type
Translator but does not override it

更新:
当我做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项目属性中的源级别合规性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读