我有一个用例,其中一个Object存在一个字符串,该字符串具有评估另一个对象属性的条件。
例如。
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>>
}
}
评估最有效的方法是什么? 任何开箱即用的想法都是受欢迎的! :)
答案 0 :(得分:2)
过去做过这件事。您有多个选项
答案 1 :(得分:1)
如果属性遵循JavaBeans标准(即它们是带有getter和setter的字段),那么您可以使用Apache Commons / BeanUtils之类的技术。
示例代码:
Student student = // some student
Map<String, Object> studentProperties = BeanUtils.describe(student);
Integer currentScore = studentProperties.get("currentScore"); // etc.
答案 2 :(得分:0)
这并不简单,实际上你需要一种表达式解析器语言,也许你可以使用现有的解决方案,即jexel