2

私は非常に奇妙な問題を抱えています。2 つのルールを含むこの Procedure オブジェクトを取得しました。ここで、for ループを使用してこれらのルールをループアウトし、1 つのルールを取得したいと考えました。しかし、私は常にnullになります。彼はifステートメントをスキップしているようで、直接私のreturn null部分に行きます。

最初のルールの名前は年齢で、もう 1 つのルールの名前は事故です。ここにメソッドを含めました。

私のログは戻ってきます:

rulename: 'age' and variable: 'accidents' and is true ?: 'false'

rulename: 'accidents' and variable: 'accidents' and is true ?: 'true'

private Rule searchRule(String ruleName)
    {
        List<Rule> test = this.procedureObject.getRules();

        for(Rule rule : test)
        {
            Log.d("debug", "rulename: '" + rule.getName() + "' and variable: '"+ruleName+"' and is true ?: '"+rule.getName().equalsIgnoreCase(ruleName)+"'");
            if(rule.getName().equalsIgnoreCase(ruleName))
            {
                return rule;
            }
        }

        return null;
    }

編集:それは今動作します。

呼び出しコードでこれを変更しました:

Rule makeRule = RuleFactory.getNewRuleClassNameInstance(this.searchRule(ref2.getName()).getClass().getSimpleName());

に:

Rule foundRule = this.searchRule(ref2.getName());

Rule makeRule = RuleFactory.getNewRuleClassNameInstance(foundRule.getClass().getSimpleName());

そして、それは突然機能します。

4

2 に答える 2

0

私が変更され:

Rule makeRule = RuleFactory.getNewRuleClassNameInstance(this.searchRule(ref2.getName()).getClass().getSimpleName());

に:

Rule foundRule = this.searchRule(ref2.getName());
Rule makeRule = RuleFactory.getNewRuleClassNameInstance(foundRule.getClass().getSimpleName());

そして、それはうまくいくように見えました。

于 2012-05-14T09:56:49.063 に答える
0

これを試すことができますか?

if(rule.getName().equalsIgnoreCase(ruleName))
{
  Log.d("debug", "rulename: '" + rule.getName() + "' and variable: '"+ruleName+"' and is true ?: '"+rule.getName().equalsIgnoreCase(ruleName)+"'");
  return rule;
}
于 2012-04-24T06:02:00.240 に答える