Java 调用泛型方法

Java 调用泛型方法,java,Java,当我执行下面提到的代码时,出现以下错误: TestGenerics1.java:40: error: cannot find symbol arr.get(i).eat(); ^ symbol: method eat() location: class Object 1 error 我面临的问题通过以下示例代码再现: import java.util.

当我执行下面提到的代码时,出现以下错误:

TestGenerics1.java:40: error: cannot find symbol
                              arr.get(i).eat();
                                        ^
symbol:   method eat()
location: class Object
1 error
我面临的问题通过以下示例代码再现:

import java.util.*;

abstract class Animal
{
    void eat() { System.out.println("animal eating"); }
}

class Dog extends Animal
{
    void bark() { }
}

class Cat extends Animal
{
    void meow() { }
}

class RedCat extends Cat { }

public class TestGenerics1
{
    public static void main(String[] args)
    {
        new TestGenerics1().go();
    }

    public void go()
    {
        List<Cat> arrAnimals = new ArrayList<Cat>(Arrays.asList(new RedCat(), new Cat()));

        takeAnimals(arrAnimals);
    }

    //public static void takeAnimals(List<Cat> arr)
    public static void takeAnimals(List<? super RedCat> arr)
    {
        for(int i=0; i<arr.size(); i++)
        {
            arr.get(i).eat();
        }
    }
}
import java.util.*;
抽象类动物
{
void eat(){System.out.println(“动物进食”);}
}
狗类动物
{
void bark(){}
}
猫科动物
{
void meow(){}
}
类RedCat扩展了Cat{}
公共类TestGenerics1
{
公共静态void main(字符串[]args)
{
新的TestGenerics1().go();
}
公开作废go()
{
List arrAnimals=new ArrayList(Arrays.asList(new RedCat(),new Cat());
野生动物;
}
//公共静态动物(列表arr)

公共静态无效takeAnimals(List
List
List
?超级红猫
允许传入例如
列表
。Mehotd的可能副本应为“takeAnimals”(List
?超级红猫
),允许传入例如
列表
。Mehotd的可能副本应为“takeAnimals(列表我认为它应该是
ListGood点。但是我认为通配符在我们想要限制/缩小输入列表类型
list的情况下是好的。我认为它应该是
ListGood点。但是我认为通配符在我们想要限制/缩小输入列表类型
list的情况下是好的
List<? extends Cat>