【问题标题】:"method must override or implement a superclass method" when I'm alreadying doing so当我已经这样做时,“方法必须覆盖或实现超类方法”
【发布时间】:2014-11-15 07:09:36
【问题描述】:

我多次看到这个问题被问到,但答案并不适用于我。这是有问题的界面:

public interface MapInterface<K, V> {

    public MapInterface<K, V> put(K key, V value);

}

以及实现这个的类:

public class MapInterfaceImpl<K, V> implements MapInterface {

    @Override
    public MapInterface<K, V> put(K key, V value) {
        // TODO Auto-generated method stub
        return null;
    }
}

我忽略了不相关的代码。所有其他类似的问题都指向 java 编译器合规性问题。他们都说要从1.5变成1.6。由于我从一开始就使用 1.8,这不适用于我。那么这里有什么问题呢?

编辑:只是添加一些东西。当 Eclipse 自动从接口添加未实现的方法时,而不是 put(K key, V value),它会写入 put(Object key, Object value)。这显然和接口中的方法签名不同,但是编译器并没有报错。

【问题讨论】:

    标签: java eclipse


    【解决方案1】:

    你没有重写接口的契约,它指定了泛型参数&lt;K, V&gt;

    您需要更改您的工具行以包含它。

    public class MapInterfaceImpl<K, V> implements MapInterface<K, V> {
        // implementation
    }
    

    【讨论】:

    • 不敢相信我错过了。谢谢。
    【解决方案2】:

    替换下面的行:

    public class MapInterfaceImpl&lt;K, V&gt; implements MapInterface {

    与:

    public class MapInterfaceImpl<K, V> implements MapInterface<K, V> {
    

    【讨论】:

    • 感谢您的回答。我选择了 Makoto 的答案,因为他是第一个发布的。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2015-11-19
    相关资源
    最近更新 更多