我有一个方法,其某些部分是重复的。我设法以原始方法多次使用较小方法的方式来拆分代码。问题是,当我将某些值作为参数传递给那些较小的新方法并使用它们时,原始值不会得到更新。我要做的动作是:增加值或从arraylist中删除项目。如何使用较小的方法(不仅是引用)来更新原始值?我想出的唯一可能的解决方案是创建一个新类,在其中可以为这些值设置一个设置器并更新它们。但是,有没有更容易/直接解决的方法?
部分主要方法:
int numberOfBlocks = 0;
int currentBlock = 0;
int currentTime = 0;
ArrayList<Request> queue = new ArrayList<Request>();
if(queue.size != 0) {
updateStatus(queue, currentBlock, numberOfBlocks);
}
if(something else happens) {
removeFinished(queue, currentBlock);
}
更小方法:
private void updateStatus(ArrayList<Request> queue, int currentBlock, int numberOfBlocks) {
if (queue.get(0).getBlock() > currentBlock)
currentBlock++;
else
currentBlock--;
numberOfBlocks++;
}
private void removeFinished(ArrayList<Request> queue, int currentBlock){
if (queue.get(0).getBlock() == currentBlock) {
queue.remove(0);
}
}
首先,如果您传递参数以使其在方法中被更改,则您的方法应返回更改后的值,这将解决您的问题。如果需要更改多个值,那么您是正确的,向基元传递了y值,并且调用方法看不到在调用的方法中所做的更改。因此,您应该像希望的那样使用setter和getter将这些值封装在包装类中。仅此一点就能解决您的问题。但是,由于修改了该类,对于您的方法返回该类也很有意义。这只是一个好阶梯