Согласно документации Java для ArrayList ( ArrayList ), вы должны использовать функцию «добавить», чтобы вставить новый элемент в ArrayList, что означает, что ваш код должен выглядеть примерно так:
boolean addAnimal (int type, String name, int age) {
for (int x = 0; x < animals.size(); x++) {
if (animals.get(x) == null) {
if (type == 1) {
animals.add(new Dog(name, age));
}//end of if
else if (type == 2) {
animals.add(new Cat(name, age));
}//end of else if
else {
animals.add(new Bird(name, age));
}//end of else
return true;
}//end of outer if
}//end of for loop
return false;
}//end of addAnimal(type, name, age)
Примечание: я предполагаю, что тип переменной "animals" - ArrayList, когда T - интерфейс абстрактного класса Animal.
Надеюсь, я правильно понял вопрос, дайте мне знать, если это не было вашим намерением.
EDIT:
Ну, так как ваши классы Dog и Cat реализуют интерфейс Animal, тип ArayList должен быть:
ArrayList<Animal> animals = new ArrayList<Animal>();
вместо:
ArrayList<String> animals = new ArrayList<String>();
Теперь, если вы намереваетесь просто добавить новые объекты в ArrayList без какой-либо другой логики (например, удалить дубликаты), вы хотели бы просто проверить тип объекта и решить, какой класс вы должны создать, и добавить ArrayList. Тогда код должен выглядеть так:
boolean addAnimal (int type, String name, int age) {
switch(type){
case 1:
animals.add(new Dog(name, age));
return true;
case 2:
animals.add(new Cat(name, age));
return true;
default:
animals.add(new Bird(name, age));
return true;
}
return false;
}
Другой СОВЕТ : Я не знаю о вашей общей задаче, но создание Птицы, если тип не 1 или 2, может быть не очень хорошей практикой, поскольку в основном это означает, что «Если животное это не собака или кошка, это должна быть птица ", что в большинстве случаев не очень хорошая логика. Поэтому мой совет - дать Bird определенный тип (например, 3), и если тип не 1, 2 или 3, вы можете предупредить, что тип не существует или что-то в этом роде.
Так что я бы использовал "default" по умолчанию:
boolean addAnimal (int type, String name, int age) {
switch(type){
case 1:
animals.add(new Dog(name, age));
return true;
case 2:
animals.add(new Cat(name, age));
return true;
case 3:
animals.add(new Bird(name, age));
return true;
default:
System.out.println("This type does not exists"); // Or some other operation
}
return false;
}
РЕДАКТИРОВАТЬ 2:
Кстати, поскольку add может возвращать логическое значение, если добавление выполнено успешно или нет, код может быть более элегантным:
boolean addAnimal (int type, String name, int age) {
switch(type){
case 1: return animals.add(new Dog(name, age));
case 2: return animals.add(new Cat(name, age));
case 3: return animals.add(new Bird(name, age));
default: System.out.println("This type does not exists"); // Or some other operation
}
return false;
}