Java 属于超类的不同类的对象的ArrayList?
在下面的代码中,应该在“”之间放置什么,以便我能够为动物超类的每个子类添加新对象Java 属于超类的不同类的对象的ArrayList?,java,arraylist,Java,Arraylist,在下面的代码中,应该在“”之间放置什么,以便我能够为动物超类的每个子类添加新对象 package animal; import javax.swing.JOptionPane; import java.util.ArrayList; public class Animal { public static void main(String[] args) { Animal createAnimals = new Animal(); createAnim
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{}
包装动物;
导入javax.swing.JOptionPane;
导入java.util.ArrayList;
公营动物{
公共静态void main(字符串[]args){
动物创造动物=新动物();
createAnimals.userInputHandle();
ArrayList animalList=新的ArrayList();
动物学家。添加(新狗);
}
私有字符串userInputHandle(){
字符串用户输入;
userInput=JOptionPane.showInputDialog(“从列表中选择动物”
+“以下列表”
+“\n1.狗\n2.猫\n3.蛇\n4.青蛙”
+“\n5.人类\n6.鲨鱼\n7.海鸥”);
userInput=userInput.toLowerCase();
返回userInput;}
}
鱼纲动物{
}
两栖类动物{
}
爬行动物类扩展动物{}
鸟类类动物{}
所以我将在Animal类中创建一个方法,并为每个子类重写它。例如,对于两栖动物-->青蛙属于两栖类等等。如果您做出声明
ArrayList <Animal> animalList = new ArrayList<Animal>();
ArrayList animalList=new ArrayList();
然后你就可以添加任何动物的子类了。如果你做出声明的话
ArrayList <Animal> animalList = new ArrayList<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 animalList=new ArrayList();
然后,您将能够向其中添加任何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 animalList=新的ArrayList();
//
添加(新爬行动物());
动物学家。添加(新鸟());
添加(新的两栖动物());
//这将很好地工作,因为“Animal”将是其他类的基类
ArrayList animalList=新的ArrayList();
//
添加(新爬行动物());
动物学家。添加(新鸟());
添加(新的两栖动物());
像这样在ArrayList上声明
ArrayList <Animal> animalList = new ArrayList<Animal>();
ArrayList <Animal> animalList = new ArrayList<>();
等等
如果您使用的是JavaSE7,那么实例化泛型(在您的例子中是ArrayList)的另一种方法就是使用这样的有限类型推断
ArrayList <Animal> animalList = new ArrayList<Animal>();
ArrayList <Animal> animalList = new ArrayList<>();
ArrayList animalList=new ArrayList();
像这样在ArrayList上声明
ArrayList <Animal> animalList = new ArrayList<Animal>();
ArrayList <Animal> animalList = new ArrayList<>();
等等
如果您使用的是JavaSE7,那么实例化泛型(在您的例子中是ArrayList)的另一种方法就是使用这样的有限类型推断
ArrayList <Animal> animalList = new ArrayList<Animal>();
ArrayList <Animal> animalList = new ArrayList<>();
ArrayList animalList=new ArrayList();
它将仅为“Animal”,因为您将从“Animal”类派生类的其余部分。它将仅为“Animal”,因为您将从“Animal”类派生类的其余部分。这解决了它。也不能弄明白那件事是多么愚蠢。谢谢。非常欢迎,请将问题标记为已解决,因为这也将帮助其他学习者!在编程的世界里,有一种像坚果一样的愚蠢,每件事都是一种体验,在我生命中的某个时刻,我一直走在同一条道路上:P!这就解决了问题。也不能弄明白那件事是多么愚蠢。谢谢。非常欢迎,请将问题标记为已解决,因为这也将帮助其他学习者!在编程的世界里,有一种像坚果一样的愚蠢,每件事都是一种体验,在我生命中的某个时刻,我一直走在同一条道路上:P!