gpt4 book ai didi

Java - 如何检查对象是否是类定义中类的实例

转载 作者:行者123 更新时间:2023-11-30 08:12:54 25 4
gpt4 key购买 nike

代码:

public class Composite extends Component implements Iterable<Component>{

private List<Component> caseComponents = new ArrayList<Component>();


@Override
public Iterator<Component> iterator(){
return new CompIterator();
}



private class CompIterator implements Iterator{
int index = 0;

@Override
public boolean hasNext(){
if(index<caseComponents.size()){
return true;
}
return false;
}

@Override
public Object next() {
if(this.hasNext()){
return caseComponents.get(index++);
}
return null;
}
}


public String breadthFirst() {
Queue<Component> q = new LinkedList<Component>();
StringBuilder stringRep = new StringBuilder();
q.add(this);

while(q.element()!=null){
Component first = q.remove();
System.out.println(first.name);

for(Component c : first.caseComponents){
q.add(c);
}
}
}

我正在尝试对复合设计模式树进行广度优先打印。我已经声明了一个应该由树的“根”调用的方法。在树中,将有 CompositeLeaf 类的对象。它们都继承自 Component,但当然是不同的。 Composite 是一个容器对象,也是一个对象本身,而 Leaf 只是一个对象。我想更改我的代码,以便仅当 firstComposite 的实例时才执行 for(Component c : first.caseComponents) 行,否则它会尝试遍历 Leaf,这是不可能的。我怎样才能做到只有当 firstComposite 时才输入 for 语句?

最佳答案

使用 instanceof 检查 comp 是否是 Composite 的实例。

例如:

if (comp instanceof Composite) { 
//do something
}

关于Java - 如何检查对象是否是类定义中类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com