属于父类的不同类的对象的数组列表



在下面的代码中,应该在'<'和'>'之间放置什么,以便我能够添加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.Dogn2.Catn3.Snaken4.Frog"
                + "n5.Humann6.Sharkn7.Sea Gulls");
        userInput = userInput.toLowerCase();
    return userInput;}
}
class Fish extends Animal{


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

所以我将在Animal类中创建一个方法,并为每个子类重写它。例如两栖类——>青蛙属于两栖类等等。

// 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());

如果你做声明

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

,然后你就可以给它添加任何Animal的子类

像这样在你的数组列表中声明。

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

添加Animal的子类。

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

如果你正在使用Java SE7,另一种实例化泛型(在你的例子中是ArrayList)的方法是使用像这样的有限类型推断。

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

最新更新