首页 > 解决方案 > Java 继承。父母有父母的名单,孩子必须有孩子的名单。如何?

问题描述

我正在努力实现下一个:

家长:

public class Animal {
    private List<Animal> relatives;

    public List<Animal> getRelatives() {
        return relatives;
    }

    public void setRelatives(List<Animal> relatives) {
        this.relatives = relatives;
    }
}

孩子:

public class Dog extends Animal {
    private List<Dog> relatives;

    public List<Dog> getRelatives() {
        return relatives;
    }

    public void setRelatives(List<Dog> relatives) {
       this.relatives = relatives;
    }
}

但由于某种原因,我得到了方法冲突的错误。在不使用泛型类型的情况下,这甚至可以通过继承实现吗?

标签: javainheritance

解决方案


您实际上不需要覆盖/复制子类中的任何内容。

class Animal<Relative extends Animal<?>> {
  private List<? extends Relative> relatives;

  public List<? extends Relative> getRelatives() {
    return relatives;
  }

  public void setRelatives(List<? extends Relative> relatives) {
    this.relatives = relatives;
  }
}

class Dog extends Animal<Dog> {}

推荐阅读