我的功能是:Java的递归函数调用失败
private void addEdges(mxICell mainObject, List<Object> edgesList) {
if (mainObject.getEdgeCount() > 0) {
// for (int i = 0; i < mainObject.getEdgeCount(); i++) {
edgesList.add(mainObject.getEdgeAt(0));
addEdges(((Line) mainObject.getEdgeAt(0)).getSource(), edgesList);
}
// }
else
return;
}
BEGING UPDATE 函数调用是在这里:
for (Object obj : map.values()) {
if (obj instanceof Port
&& ((Port) obj).getParent().getStyle().equals("POWER")) {
String Feeder = ((Port) obj).getParent().getValue()
.toString();
List<Object> edgesList = new ArrayList<Object>();
Port p = (Port) obj;
mxICell mainObject = p;
addEdges(mainObject, edgesList);
//staff
}}
结束时更新 它给了我一个
Exception occurred during event dispatching:
java.lang.StackOverflowError
'edgeCount'是否受循环中所做的任何操作影响?如果不是,'堆栈溢出'是不可避免的。 – devnull
'mainObject.getEdgeCount()'总是'> 0'。 – Maroun
请使用一些终止条件。 –