我有主要课程
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)
任何提示实现这一目标?
你可以使用instanceof:
for(A a : as){
if(a instanceof B){
a.print();
}
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅此问题.