我的功能是: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
請使用一些終止條件。 –