私が考えることができる 1 つの可能性は、カウントをクラスのメンバー変数に格納することです。もちろん、これは publicdoIt
メソッドが単一のスレッドによってのみ呼び出されることを前提としています。
もう 1 つのオプションは、パブリック メソッドをリファクタリングして、プライベート ヘルパー メソッドを呼び出すことです。プライベート メソッドは、リストをパラメーターとして受け取り、カウントを返します。例えば:
public List<Thing> doIt(String aString) {
List<Thing> list = new ArrayList<Thing>();
int count = doItHelper(aString, list, 0);
// ...
return list;
}
private int doItHelper(String aString, List<Thing> list, int count) {
// ...
// do something that updates count
count = doItHelper(aString, list, count);
// ...
return count;
}
これは、変数が実際には呼び出し元に返されないdoIt
ため、パブリック メソッドでエラー処理を実行できることを前提としています。count
それを行う必要がある場合は、もちろん例外をスローできます。
public List<Thing> doIt(String aString) throws SomeCustomException {
List<Thing> list = new ArrayList<Thing>();
int count = doItHelper(aString, list, 0);
// ...
if (someErrorOccurred) {
throw new SomeCustomException("Error occurred at chracter index " + count, count);
}
return list;
}
アルゴリズムが実際にどのように機能するかを詳しく知らずに、それが役立つかどうかを知ることは困難です。