【问题标题】:Eclipse luna duplicate method namesEclipse luna 重复方法名称
【发布时间】:2015-12-18 02:02:59
【问题描述】:

背景:我们遇到的主要问题是在 Redhat linux Santiago 6 中运行的 Eclipse Helios 崩溃并且有时没有响应。我们无法找出根本原因,并尝试了我从不同站点(包括 stackoverflow)阅读的不同解决方案。

到目前为止我做了什么: 所以我决定下载 Eclipse Luna 并从我的 Eclipse Helios 导入现有项目,并将 eclipse luna 中安装的 jre 更改为 WLS 1.8 中内置的 jrockit(如我们使用的是旧版框架)

问题: 导入现有项目后,eclipse luna 出现问题。

Duplicate methods named put with the parameters (K, V) and (Object, Object) are inherited from the types HashMap and AbstractMap

The method put(Object, Object) is ambiguous for the type

但是在eclipse helios中没有遇到这个错误。

我也下载了 eclipse Juno、Kepler 但和 luna 一样的问题。

问题:是否有解决方法或如何关闭并忽略 eclipse luna 中的此错误?

编辑:按要求提供示例代码

这是有错误的类之一。

public class DummyMessageMap extends HashMap implements MessageMap {
  // implementation of the interface but returns null values.
}

public interface MessageMap extends Map{

    public Message getMessage(String key);
    public String getLanguage();
}

【问题讨论】:

    标签: java eclipse eclipse-luna


    【解决方案1】:

    这里的问题是接口java.util.Map通过两条路径到达你的类DummyMessageMap,即DummyMessageMap extends HashMap extends AbstractMap implements MapDummyMessageMap implements MessageMap extends Map。在第二条路径中,如错误所示,泛型类型 KV 在您的代码中被指定为 objectobject。这是一种名为Multipath Hierarchy 的设计气味,除了摆脱这种路径冲突之外别无他法。如果可能,请尝试从 MessageMap 中删除 extends Map

    【讨论】:

    • 但是为什么在 Eclipse Helios 中没有遇到这个错误?我怎样才能忽略这个错误?
    • 我不知道为什么 Eclipse Helios 没有显示这个,但是这 is 在任何平台上都是一个错误。我不知道ignoring errors 但我强烈建议你解决这个问题。忽略不是一个好的选择。
    • 消除错误的一种方法是查找泛型 KV 的指定位置为 ObjectObject。如果您在第二个路径中删除规范或在第一个路径中进行规范,则两个路径中的函数签名最终将相同并且不会发生错误。
    【解决方案2】:

    这对我来说似乎是一个超载的问题。

    如果参数相同,Java 无法确定使用哪一个。因此,它会引发重复方法错误。

    尝试更改方法参数并再次测试您的程序,您的错误可能来自不正确地重载方法。

    【讨论】:

    • 我不确定。 HashMap 扩展 AbstractMap,我看不出这个错误是如何因不正确的重载而出现的。
    • 还有为什么我在 eclipse helios 中没有遇到这个问题?
    • 我不能简单地更改代码,因为它会影响很多类,并且只是为了 Eclipse 的兼容性,因为这可能会在代码中引入错误和其他问题。
    猜你喜欢
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 2017-07-16
    • 2018-02-06
    • 2015-07-13
    相关资源
    最近更新 更多