新しい方法へのparamsの代わりに、参照として、それらを通過した後に元の値を更新します

kabugh:

私は、そのいくつかの部分の繰り返しのある方法があります。私は、元のメソッドが小さい方法を何度も使用するような方法でコードを分割するために管理しました。問題は、私は彼らとこれらの新しい小さくする方法や仕事にのparamsとしていくつかの値を渡す際に、元の値が更新されませんということです。私はアクションは次のとおりです。値の増分または配列リストから項目を削除します。どのように私は、だけでなく、参照を小さくする方法を使用して、元の値を更新していますか?私が思いついた唯一の可能な解決策は、私はそれらの値のためのセッターを持っており、それらを更新することができ、新しいクラスを作成することです。しかし、それを解決する簡単/簡単な方法がありますか?

mainメソッドの一部:

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);
        }
    }
マイケルGantman:

それは方法で変更するために、あなたが順番にパラメータを渡す場合はまず第一に、あなたの方法を変更した値を返す必要があり、これはあなたの問題を解決します。もっとして1つの値のニーズが変更する場合は、プリミティブは、yの値を正しく渡されていると呼び出すメソッドが呼び出さ方法で行われた変更は表示されません。あなたが望んだようにセッターとゲッターをラッピングクラスでそれらの値をカプセル化する必要がありますので。それだけでは、あなたの問題を解決します。しかし、また、それが修正されているので、そのクラスを返すようにする方法のために意味をなさないと思います。これはちょうど良いかまちです

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=374772&siteId=1