我正在Eclipse IDE上編寫Java SE 8應用程序。我遇到的問題在後面。遞增原始包裝類作爲參數傳遞給對調用者沒有影響的方法
private Object[][] adjustIndexTaskValueAdded(int size){
Integer adjustingIndex = 0;
Object[][] tasksDisplay = new Object[size][taskValues[0].length];
for (int i = 0; i < size; i++) {
tasksDisplay[i][0] = taskValues[i][0];//phase colour
tasksDisplay[i][1] = identifyNextRowIDTaskTable(adjustingIndex, i);// the index
}
return tasksDisplay;
}
所以,我有adjustingIndex
整數包裝類,我傳遞給identifyNextRowIDTaskTable()
方法。以便本地var可以存儲在子方法中修改的值。
private String identifyNextRowIDTaskTable(Integer adjustingIndex, int currentRowID){
if(UtilityOperations.isPhaseRow(phaseColourCurrent)){//it's a phase row
adjustingIndex++;
return "";
}
else{//it's a task row
int displayID = tableID - adjustingIndex;
adjustingIndex = 0;
return String.valueOf(displayID);
}
}
上述方法顯示其修改整數包裝類我傳遞給該方法。 現在,當我運行應用程序時,新值不會反映在調用方法上。看起來值在子方法上發生了變化/調整,但父方法沒有看到變化。最終,結果變得錯誤。
顯示的源代碼被簡化了...
那麼,什麼問題是? 我傳遞引用類型var,它不是一個遞歸操作。 當然,我可以使用對象的狀態來存儲值。然而,我想了解目前的陷阱。
問候