【问题标题】:How do you pull specific objects from an arraylist?如何从数组列表中提取特定对象?
【发布时间】:2015-07-13 09:48:12
【问题描述】:

我创建了一个 Animal 超类、Shark 和 Whale 子类。我会用什么来打印这个数组列表中的 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());
    }
  }
}

【问题讨论】:

    标签: java inheritance arraylist polymorphism overriding


    【解决方案1】:

    您可以使用instanceof 从超类动物列表中检查特定子类

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

    【讨论】:

    • 我写了同样的代码,但你先贴出来!!反正逻辑很好。
    • 感谢第一个障碍的帮助!
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      例如:遍历您的 ArrayList

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

      【讨论】:

        猜你喜欢
        • 2016-05-25
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        • 2022-08-15
        • 2018-09-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多