gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:01:03 25 4
gpt4 key购买 nike

我在创建一个方法来将扩展抽象类(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com