你如何从arraylist中提取特定对象?

时间:2015-05-04 04:52:49

标签: java inheritance arraylist polymorphism method-overriding

我制作了动物超类,鲨鱼和鲸鱼的子类。我将用什么来打印出这个arraylist中的Shark对象?

驱动:

import java.util.ArrayList;

public class Creator {     
  public static void main(String[] args){

    ArrayList<Animal> obj = new ArrayList<Animal>();
    obj.add(new Shark("James"));
    obj.add(new Shark("Mike"));
    obj.add(new Whale("Steve"));
    obj.add(new Whale("Tommy"));

    for (Animal a: obj){
    System.out.println(a.getName());
    }
  }
}

3 个答案:

答案 0 :(得分:4)

您可以使用instanceof检查超类Animal

列表中的特定子类
for (Animal a: obj){
   if(a instanceof Shark)
    System.out.println(a.getName());
}

答案 1 :(得分:0)

简单变体只是使用instanceof。您还可以在基类中创建一个getType()方法,该方法将返回一个enum对象或其他实体来定义子类中的物种。

答案 2 :(得分:0)

使用instanceof
 来自JLS 15.20.2. Type Comparison Operator instanceof

  

在运行时,如果RelationalExpression的值不是instanceof,则true运算符的结果为null,并且可以将引用强制转换为ReferenceType而不引发ClassCastException。否则结果为false

Ex:迭代ArrayList

if(yourObject instanceof Shark){
    System.out.println(yourObject.getName());
}