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