Java 在Eclipse中重写方法时在运行时从超类型定义泛型

Java 在Eclipse中重写方法时在运行时从超类型定义泛型,java,eclipse,generics,class-hierarchy,Java,Eclipse,Generics,Class Hierarchy,我有一个名为AbstractCollection的类和一个名为AbstractMap的子类。子类定义为公共抽象类AbstractMap扩展了AbstractCollection。名为append inAbstractCollection的方法具有以下签名受保护的抽象int append(E元素)。但是当我在AbstractMap类public int append(Pair Pair)中重写这个方法时,我得到了一个错误。这些泛型都不是通配符,因为它们都是在AbstractMap的实例被创建为K和

我有一个名为
AbstractCollection
的类和一个名为
AbstractMap
的子类。子类定义为
公共抽象类AbstractMap扩展了AbstractCollection
。名为append in
AbstractCollection
的方法具有以下签名
受保护的抽象int append(E元素)
。但是当我在AbstractMap类
public int append(Pair Pair)
中重写这个方法时,我得到了一个错误。这些泛型都不是通配符,因为它们都是在AbstractMap的实例被创建为K和V时指定的,因此我不理解为什么会出现这个错误

我还尝试让Eclipse为我重写该方法,但它编写的签名与我写的签名相同,因此错误仍然存在<代码>右键单击代码>>源>>重写/实现方法…

更新 我以最简单的形式重新创建了产生错误的代码:

public abstract class AbstractCollection<E> {

    protected abstract int append(E element);
}

public abstract class AbstractMap<K, V> extends AbstractCollection<Pair<K, V>> {

    @Override
    public int append(Pair<K, V> pair) {  //error pops up here
        //... 
    }

    public static final class Pair<K, V> {

    }
}
公共抽象类AbstractCollection{
受保护的抽象int-append(E元素);
}
公共抽象类AbstractMap扩展了AbstractCollection{
@凌驾
public int append(Pair Pair){//error弹出在这里
//... 
}
公共静态最终类对{
}
}
我还在另一个版本的Eclipse上再次尝试了这一点,现在它可以工作了,尽管错误标志仍然出现在我主要使用的版本(Luna with java 8)上

错误标志包含以下消息:

AbstractMap类型的方法append(AbstractMap.Pair)必须重写或实现超类型方法


这可能是Eclipse如何报告错误的问题

它应该首先报告的是

public abstract class AbstractMap<K, V> extends AbstractCollection<Pair<K, V>> {
//                                                                 ^ undefined at this point
或者使用它的完全限定名

public abstract class AbstractMap<K, V> extends AbstractCollection<com.example.AbstractMap.Pair<K, V>> {
公共抽象类AbstractMap扩展了AbstractCollection{

这只是一个错误还是一个非常具体的错误,可以帮助我们找出错误所在?我无法重现您的错误。您确定已提供了所需的所有详细信息吗?请参阅。您能否明确说明这些类的位置?它们是否在自己的文件中声明?AbstractCollection和AbstractMap是两个独立的文件。Pair是de在AbstractMap中被罚款。目前我在自己的文件中定义了Pair,因为这种方法不会生成错误标志。我只是想知道为什么。@SotiriosDelimanolis
public abstract class AbstractMap<K, V> extends AbstractCollection<com.example.AbstractMap.Pair<K, V>> {