我正在检查超类引用是否是子类的实例,但无法使其工作,不确定我错过了什么。
SplitStrategy - Superclass
SplitByDC - Subclass
策略列表 - 是包含子类实例的列表。
//My existing code
SplitStrategy strategy;
for (Iterator<SplitStrategy> strategyItr = strategiesList.iterator(); strategyItr.hasNext(); splitedList = strategy.execute((List) splitedList)) {
strategy = (SplitStrategy) strategyItr.next();
// Added below line to check for a subclass instance - this is returning false
if (strategy instanceof SplitByDC) { //Where SplitByDC is a subclass of SplitStrategy
请参见下面的示例
import java.util.Arrays;
import java.util.List;
public class CheckInstanceOf {
public static void main(String[] args) {
List<A> alist = Arrays.asList(new A(), new B(), new B(), new C());
for (A a: alist) {
System.out.println(a.getClass().getSimpleName() + " >> " + (a instanceof B));
}
}
}
class A {
}
class B extends A {
}
class C extends A {
}
CheckInstanceOf.main()
A >> false
B >> true
B >> true
C >> false