Java8-Find超类引用是一个子类的实例
我正在检查超类引用是否是子类的实例,但无法使其工作,不确定我缺少了什么 拆分策略-超类Java8-Find超类引用是一个子类的实例,java,Java,我正在检查超类引用是否是子类的实例,但无法使其工作,不确定我缺少了什么 拆分策略-超类 SplitByDC-子类 strategiesList-是包含子类实例的列表 //My existing code SplitStrategy strategy; for (Iterator<SplitStrategy> strategyItr = strategiesList.iterator(); strategyItr.hasNext(); splitedList = strate
SplitByDC-子类 strategiesList-是包含子类实例的列表
//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
//我的现有代码
分拆战略;
for(迭代器strategyItr=strategiesList.Iterator();strategyItr.hasNext();splitedList=strategy.execute((List)splitedList)){
strategy=(SplitStrategy)strategyItr.next();
//在下面的行中添加以检查子类实例-返回false
if(strategy instanceof SplitByDC){//其中SplitByDC是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
导入java.util.array;
导入java.util.List;
公共类CheckInstanceOf{
公共静态void main(字符串[]args){
List alist=Arrays.asList(新的A(),新的B(),新的B(),新的C());
为了(A:A){
System.out.println(a.getClass().getSimpleName()+“>>”+(a instanceof B));
}
}
}
甲级{
}
B类扩展了A类{
}
C类扩展了{
}
CheckInstanceOf.main()
A>>错误
是的
是的
C>>错误
请参见下面的示例
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
导入java.util.array;
导入java.util.List;
公共类CheckInstanceOf{
公共静态void main(字符串[]args){
List alist=Arrays.asList(新的A(),新的B(),新的B(),新的C());
为了(A:A){
System.out.println(a.getClass().getSimpleName()+“>>”+(a instanceof B));
}
}
}
甲级{
}
B类扩展了A类{
}
C类扩展了{
}
CheckInstanceOf.main()
A>>错误
是的
是的
C>>错误
您通过强制转换将策略
强制为拆分策略
。您的代码虽然不规则,但看起来应该可以工作。向我们展示一个我们可以运行的最小代码示例,它给出了您得到的错误。我没有得到任何错误,它返回false。什么返回false?您不需要强制转换(拆分策略)itr.next()
如果strategiesList
属于
。您强制strategy
成为SplitStrategy
。您的代码虽然不规则,但看起来应该可以工作。给我们展示一个我们可以运行的最小代码示例,它给出了您得到的错误。我没有得到任何错误,它返回false。什么返回false?Y如果策略列表属于
,则不需要强制转换(拆分策略)itr.next()
。