Java 8 - 查找超类引用是子类的实例



我正在检查超类引用是否是子类的实例,但无法使其工作,不确定我错过了什么。

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

最新更新