将原始值作为参数传递给新方法(而不是引用)后更新

问题描述 投票:0回答:1

我有一个方法,其某些部分是重复的。我设法以原始方法多次使用较小方法的方式来拆分代码。问题是,当我将某些值作为参数传递给那些较小的新方法并使用它们时,原始值不会得到更新。我要做的动作是:增加值或从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);
        }
    }
java pass-by-reference
1个回答
0
投票

首先,如果您传递参数以使其在方法中被更改,则您的方法应返回更改后的值,这将解决您的问题。如果需要更改多个值,那么您是正确的,向基元传递了y值,并且调用方法看不到在调用的方法中所做的更改。因此,您应该像希望的那样使用setter和getter将这些值封装在包装类中。仅此一点就能解决您的问题。但是,由于修改了该类,对于您的方法返回该类也很有意义。这只是一个好阶梯

© www.soinside.com 2019 - 2024. All rights reserved.