Java 使用不同的返回类型(泛型集合)重写

Java 使用不同的返回类型(泛型集合)重写,java,generics,collections,Java,Generics,Collections,请帮我解决以下问题: 类Cat必须扩展Animal(保留继承) Animal.getAll()必须返回所有动物(猫、狗等),并且Cat.getAll()只能返回猫(不要更改签名) 我尝试过,但失败了,错误是返回类型与第8行的Animal.getAll()不兼容 class Animal { public static List<Animal> getAll() { return new ArrayList<Animal>(); } } c

请帮我解决以下问题:

  • Cat
    必须扩展
    Animal
    (保留继承)
  • Animal.getAll()
    必须返回所有动物(猫、狗等),并且
    Cat.getAll()
    只能返回猫(不要更改签名)
  • 我尝试过,但失败了,错误是返回类型与第8行的Animal.getAll()不兼容

    class Animal {
        public static List<Animal> getAll() {
            return new ArrayList<Animal>();
        }
    }
    
    class Cat extends Animal {
        public static List<Cat> getAll() {
            return new ArrayList<Cat>();
        }
    }
    
    类动物{
    公共静态列表getAll(){
    返回新的ArrayList();
    }
    }
    猫科动物{
    公共静态列表getAll(){
    返回新的ArrayList();
    }
    }
    
    将第2行更改为:

    public static List<? extends Animal> getAll() {
    

    public static list粘贴这些代码,您是如何调用这些方法的。您真的希望getAll方法是静态的吗?静态方法不会被继承覆盖。我甚至没有尝试过对它们进行envoke,因为我在写这些行时遇到了错误。