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

Ran*_*cio 1 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
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

方法print()从抽象类A扩展.类C和D扩展类B和B扩展A.

    A
  /   \
  B    E
 / \
C   D
Run Code Online (Sandbox Code Playgroud)

我该怎么做这种方法?

尝试:

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

任何提示实现这一目标?

Lin*_*ica 7

你可以使用instanceof:

for(A a : as){
    if(a instanceof B){
        a.print();
    }
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此问题.