在下面的代码中,应该在'<'和'>'之间放置什么,以便我能够添加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<>();