Atualizando valores originais depois passá-los como parâmetros para um novo método em vez de referências

kabugh:

Eu tenho um método cujo algumas partes são repetitivos. Eu consegui dividir o código de uma maneira que o método original usa métodos menores muitas vezes. O problema é que quando eu passar alguns valores como parâmetros para esses novos métodos menores e trabalhar com eles, valores originais não são atualizados. As ações que eu faço são: valor de incrementação ou removendo itens de matrizes. Como faço para atualizar os valores originais usando os métodos menores, não apenas as referências? A única solução possível eu vim com é criar uma nova classe onde eu poderia ter um setter para esses valores e atualizá-los. Mas há maneiras mais fáceis / simples para resolvê-lo?

Parte do método principal:

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);
}

métodos menores:

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);
        }
    }
Michael Gantman:

Primeiro de tudo, se você passar um parâmetro para que ele seja alterado no método, o método deve retornar o valor alterado, isso vai resolver o problema. Se as necessidades mais de um valor a ser alterado, então você está correto, primitivos são passados ​​valor y eo método de invocação não vê as alterações feitas no método invocado. Portanto, você deve encapsular esses valores em uma classe de embrulho com setters e getters como você queria. Mas isso só vai resolver o problema. Mas também não faria sentido para o seu método para retornar a classe, uma vez que é modificado. Este é apenas um bom stile

Acho que você gosta

Origin http://10.200.1.11:23101/article/api/json?id=374771&siteId=1
Recomendado
Clasificación