1

別のオブジェクトの属性に対して評価するための条件を持つ文字列を含むオブジェクトが存在するユースケースがあります。例: StudentEvaluator条件がある

student.pastScore>70 && student.currentScore>90 && student.sportsParticipation=true

オブジェクトStudentにはそれぞれの属性があります。

E.g. pastScore, currentScore and sportsParticipation

StudentEvaluator条件文字列は実行時に作成され、true または false を評価する必要があります。さまざまな条件で並行して実行されている多数の StudentEvaluators があります。ここで、StudentEvaluator はその評価関数で学生の引数を受け入れ、条件を評価します。すなわち

public Class StudentEvaluator{

String condition;

  public StudentEvaluator(String condition){
    this.condition = condition;
  }

  evaluate(Student student){
    <<Code>>
  }

}

評価の最も効率的な方法は何ですか? 枠にとらわれないアイデアは大歓迎です!:)

4

3 に答える 3

3

過去にこれを行いました。複数のオプションがあります

  1. OGNL
  2. MVEL - OGNL よりもパフォーマンスが高い。論理演算子と条件演算子をサポートしています。
  3. SpEL - Spring Expression Language - 私の好み。
于 2012-11-09T16:13:46.850 に答える
1

プロパティが JavaBeans 標準に準拠している場合 (つまり、getter と setter を含むフィールド)、Apache Commons / BeanUtilsなどのテクノロジを使用できます。

サンプルコード:

Student student = // some student
Map<String, Object> studentProperties = BeanUtils.describe(student);
Integer currentScore = studentProperties.get("currentScore"); // etc.
于 2012-11-09T16:10:14.617 に答える
0

単純ではありません。実際には、式パーサー言語が必要です。おそらく、既存のソリューション、つまりjexelを使用できます

于 2012-11-09T16:05:28.270 に答える