如何查找我的对象是否扩展了给定的抽象类?

时间:2018-08-08 12:09:02

标签: java

我上主课

public class Main(){
   public static void main(String[] args){
      ArrayList<A> as = new ArrayList<>();
      C c = new C();
      D d = new D();
      E e = new E();

      as.add(c);
      as.add(d);
      as.add(e);

      for(A a : as){
         a.print(); // want to do it conditionally when Object inside list have extended class B
      }
   }
}

方法print()是从抽象类A扩展的。 C和D类扩展了B类,B类扩展了A类。

    A
  /   \
  B    E
 / \
C   D

我该怎么做?

尝试:

for(A a : as){
   if(a.getClass().getSuperclass().getSimpleName().equals("B")){
      a.print(); // Doesn't work a.getClass().getSuperclass().getSimpleName() prints A
   }
}

实现这一目标有什么秘诀?

1 个答案:

答案 0 :(得分:7)

您可以使用instanceof

for(A a : as){
    if(a instanceof B){
        a.print();
    }
}

有关更多信息,请参见this question