私は誰かのプロジェクトを引き継いで、条件を取り、その条件に子があるかどうかをチェックする関数に出くわしました。はいの場合、子がオブジェクトまたはその他の条件であるかどうかを確認します。それがオブジェクトの場合は先に進み、条件の場合はロジックを別の方法で実行し、その下にあるものをチェックし続けます....これは複雑すぎることを知っており、これ以上説明することはできませんしかし、シナリオに同様のロジックを書きました。
私の例でCondtionList
は、クラスを拡張しCondition
、ツリー構造は次のようになります
condition
/ \
object condition
/ | \
object condition object
/ \
object condition
ここでやろうとしているのは、構造のような多層ツリーを再帰的に呼び出すことですCondition
。この関数の実行が完了する前に、再帰を繰り返しコールバックする戻り値に到達するまで、正常に動作します。
これが私のコードです:
private boolean[] isNumberEvenOrOdd(Condition condition){
boolean isEven = false;
boolean isOdd = false;
boolean[] isNumberEvenOrOdd = new boolean[2];
if(condition instanceOf ConditionList) {
for(Condition child : ConditionList.getConditions()){
if (child instanceOf ConditionList){
isNumberEvenOrOdd(child);
}
else{
if((Integer)child % 2 == 0) {
isEven = true;
}
else {
isOdd = true;
}
}
}
}
isNumberEvenOrOdd[0] = isEven;
isNumberEvenOrOdd[1] = isOdd;
return isNumberEvenOrOdd;
}
よろしくお願いします。