我正在设计一个递归方法,它有一个for循环和break内部,并期望在满足某些条件后打破循环。 以下是一段代码
public static UIComponent findElem(UIComponent component){
UIComponent comp = null;
for(UIComponent child : component.getChildren()){
if(child instanceof RichSelectBooleanRadio){
RichSelectBooleanRadio radioButton = (RichSelectBooleanRadio)child;
System.err.println("radioButton:: + " + radioButton);
Object val = radioButton.getValue();
if(val == null){
val = radioButton.getSubmittedValue();
}
System.err.println("val ::" + val);
if( val != null && Boolean.parseBoolean(val.toString())){
comp = child;
}
break;
}
findElem(child);
}
在此代码循环中,中断后不会终止。 有人可以帮我确定这个问题。
提前致谢。
答案 0 :(得分:1)
尝试这样的事情:
public static UIComponent findElem(final UIComponent component)
{
for (final UIComponent child : component.getChildren())
{
if (child instanceof RichSelectBooleanRadio)
{
final RichSelectBooleanRadio radioButton = (RichSelectBooleanRadio) child;
System.err.println("radioButton :: + " + radioButton);
Object val = radioButton.getValue();
if (null == val)
val = radioButton.getSubmittedValue();
System.err.println("val :: " + val);
if (null != val && Boolean.parseBoolean(val.toString()))
return child;
}
else
{
// Use the result of the recoursive call: if not NULL, return it
final UIComponent comp = findElem(child);
if (null != comp)
return comp;
}
}
// Return NULL if the loop ended without early return
return null;
}