我在创建一个将抽象类( Ant_Abstract )扩展到扩展Ant_Abstract类型的对象的对象的方法时遇到了一些问题。到目前为止,我有两种蚂蚁,童子军和工蚁(都是扩展的Ant_Abstract),我想使用ArrayList在文件Anthill中包含这两种蚂蚁。
当我试图编译:
import java.util.*;
class Anthill{
public ArrayList<? extends Ant_Abstract> occupants=new ArrayList(15);
Anthill(){
}
public<t extends Ant_Abstract> void enter(Class<t> ant){
occupants.add(ant);
}
}它给了我一个错误:“类型Ant_Abstract中的方法add(capture#1-of扩展ArrayList )不适用于参数(类)。
请帮帮忙。
发布于 2016-03-13 00:58:28
为了将'T‘作为泛型类型使用,您需要在类声明中指明这一点。然后,在类Anthill的属性和方法中,您可以通过以下方式引用它:
public class Anthill<T extends Ant_Abstract>{
public ArrayList<T> occupants = new ArrayList<>(15);
public void enter(T ant){
occupants.add(ant);
}
}您需要将您的ArrayList声明更改为:
public ArrayList<T> occupants = new ArrayList<>(15);将Class<T>更改为T
您没有尝试添加这个类(它本身就是一个对象类型)。您的目的是添加Abstract_Ant实现的实例,而不是类本身。
花点时间阅读一下Java泛型课
https://stackoverflow.com/questions/35965233
复制相似问题