属于超类的不同类的对象的ArrayList?

时间:2012-12-28 16:32:55

标签: java arraylist

在以下代码中,应该在'<'之间放置什么和'>'这样我就可以添加Animal超类的每个子类的新对象了?

package animal;

import javax.swing.JOptionPane;
import java.util.ArrayList;

public class Animal {

    public static void main(String[] args) {
        Animal createAnimals = new Animal();
        createAnimals.userInputHandle();

        ArrayList <> animalList = new ArrayList<>(); 
        animalList.add(new Dog);

    }

    private String userInputHandle(){

        String userInput;
        userInput = JOptionPane.showInputDialog("Select animal from the "
                + "following list"
                + "\n1.Dog\n2.Cat\n3.Snake\n4.Frog"
                + "\n5.Human\n6.Shark\n7.Sea Gulls");
        userInput = userInput.toLowerCase();

    return userInput;}
}

class Fish extends Animal{




}
class Amphibians extends Animal{

}
class Reptiles extends Animal{}
class Birds extends Animal{}

这样我将在Animal类中创建一个方法并为每个子类重写它。例如对于两栖动物 - &gt;青蛙属于两栖类等等。

3 个答案:

答案 0 :(得分:3)

// this will work fine as 'Animal' will be base class for other class
ArrayList <Animal> animalList = new ArrayList<Animal>(); 
//
animalList.add(new Reptiles());
animalList.add(new Birds());
animalList.add(new Amphibians());

答案 1 :(得分:2)

如果您发表声明

ArrayList <Animal> animalList = new ArrayList<Animal>(); 

然后你就可以添加Animal的任何子类了。

答案 2 :(得分:1)

在你的ArrayList上做出你的声明。

ArrayList <Animal> animalList = new ArrayList<Animal>();

添加Animal的子类。

animalList.add(new Monkey());
animalList.add(new Donkey());

等。

如果您正在使用Java SE7,另一种实例化Generic(在您的情况下为ArrayList)的方法是使用这样的有限类型推断。

ArrayList <Animal> animalList = new ArrayList<>();