我已多次看过这个问题,但答案并不适用于我。这是违规的界面:
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)
。这明显不同于界面中的方法签名,但编译器没有给出错误。
答案 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> {