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