java - java中将扩展抽象类的对象添加到抽象类类型的Arraylist中的方法

标签 java arraylist abstract-class

我在创建一个方法来将扩展抽象类(Ant_Abstract)的对象添加到扩展 Ant_Abstract 的类型对象的 ArrayList 时遇到一些问题。到目前为止,我有两种 Ant ,侦察兵和 worker (都扩展了 Ant_Abstract),我想使用 ArrayList 在文件 Anthill 中包含这两种 Ant 。

当我尝试编译时:

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);
     }
}

它给了我错误:“ArrayList 类型中的方法 add(capture#1-of ? extends Ant_Abstract) 不适用于参数 (Class)

请帮忙。

最佳答案

为了将“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 Generics Lesson

关于java - java中将扩展抽象类的对象添加到抽象类类型的Arraylist中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35965233/

相关文章:

java - Android NumberPicker 对 Gingerbread 的限制

java - 如何在JAMon接口(interface)中添加实例?

java - 如何编写一个以整数 ArrayList 作为输入并返回最小整数的递归方法?

C++创建一个类型为抽象类的对象

Java:如果抽象类Foo返回Object,具体类Bar可以返回String或Integer吗?

java - @JoinTable 使用导入键代替主键

java - 获取字符串数组android中的项目位置?

android - ArrayList无法应用-Android

android - 将 Uris 数组添加到 GridView 中

C# 覆盖抽象方法(包括输入参数)