У меня 5 классов:Родового ArrayList с несколькими параметрами (классов) с собственным методом добавления
- Ant {абстрактный},
- работника распространяется Ant,
- солдата распространяется Ant,
Королева проходит Ant,
Муравейник
public class Anthill<T extends Ant> { ArrayList <Ant> antHill = new ArrayList<>(); public void adde(T ant) { if(ant != null) { if (ant.isQueen() == true && amountOfQueens <= 1) { antHill.add(ant); amountOfQueens++; } else if (ant.isQueen() == false) { antHill.add(ant); amountOfAnts++; } else { System.out.println("Only one queen is permitted."); } } }
пример:
import java.util.ArrayList;
public class Main {
public static void main(String [] args){
ArrayList <Ant> antList = new ArrayList<>();
for(int i = 1; i<6; i++){
antList.adde(new Worker(6, "AW", 0, i));
}
Проблема заключается в том, что я хочу, чтобы добавить любой вид муравьев (Солдат, Королева, работник) в ArrayList, используя свой собственный public void adde(T ant)
метод.
Я получаю сообщение об ошибке, что метод adde (Worker) не определен для типа ArrayList.
Есть ли у кого-нибудь идеи, как это решить? Он работает только при использовании метода add()
, но я должен использовать свой собственный.
Вы должны были бы назвать 'adde' на' Anthill', а не 'ArrayList'. Это не имеет ничего общего с дженериками. –
Я также не вижу причин, по которым '' 'Anthill''' был бы общим классом, если вы не планируете иметь' '' Anthill'' '', которые имеют только '' 'Worker'' или только '' 'Queen'''s. –
Вам вообще не нужны общие обозначения для вашего класса. – mdewit