我制作了动物超类,鲨鱼和鲸鱼的子类。我将用什么来打印出这个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());
}
}
}
答案 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());
}