【发布时间】:2015-09-29 08:57:03
【问题描述】:
我很难理解为什么以下代码不起作用:
public <E extends Animal & IQuadruped> void testFunction()
{
List<E> list = new ArrayList<E>();
Dog var = new Dog();
list.add(var);
}
Dog 如下:
public class Dog extends Animal implements IQuadruped
{
}
我在添加时遇到编译错误:
The method add(E) in the type List<E> is not applicable for the arguments (Dog)
我只是想确保我的列表元素扩展/实现两个类,并且 Dog 满足这些条件,为什么它不起作用?
谢谢
【问题讨论】:
-
我可以调用
YourClass.<Cat>testFunction(),然后您的函数会创建一个ArrayList<Cat>并向其中添加一个Dog。 -
哈,我现在看到了逻辑中的缺陷,然后我修改了它:
codepublicvoid testFunction(E var) { List list = new数组列表 (); list.add(var); } code并称之为:codeDog var = new Dog();测试函数(变量);code这很有效,更有意义,谢谢:) -
如果你把元素作为参数,像这样:
public <E extends Animal & IQuadruped> void testFunction(E var),它会起作用。
标签: java list generics collections bounds