"方法必须覆盖或实现超类方法"当我这样做的时候

时间:2014-11-15 07:09:36

标签: java eclipse

我已多次看过这个问题,但答案并不适用于我。这是违规的界面:

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)。这明显不同于界面中的方法签名,但编译器没有给出错误。

2 个答案:

答案 0 :(得分:2)

您没有覆盖接口的合同,该接口已指定通用参数<K, V>

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

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

答案 1 :(得分:0)

替换以下行:

public class MapInterfaceImpl<K, V> implements MapInterface {

使用:

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