我需要一个表达式评估器,它可以让我评估一个表达式,如下所示:
(ItemWeight + PackageWeight) * 2
因此,给出以下输入:
ItemWeight = new Weight(2.0, LBS);
PackageWeight = new Weight(0.2, LBS);
输出为:Weight(4.4, LBS)
public class Weight {
private final float value;
private final Unit unit;
public float getValue() { return value; }
public Unit getUnit() { return unit; }
public enum Unit {
LB, KG, GRAMS;
}
}
同样,我想添加/减去两个Amount对象(其中金额由值和货币符号组成)。
注意:在我的用例中可以假设不能添加/减少两个不具有相同单位的值,等等
我读到了MVEL,但似乎MVEL不能处理涉及POJO的算术表达式。想到的其他选择是Rhino和Commons EL。
我可以使用什么样的好库(如果需要扩展)来解决这个问题?
谢谢!
答案 0 :(得分:1)
Java不是C ++;你不能超载运营商。
使用流畅的界面来实现它可能并不具有视觉上的吸引力,但我会说它比你提议的更容易。
这很有趣,因为你不仅要考虑EL而且还要考虑EL。这个想法比你的Weight
类更通用。它更像QuantityWithUnits
。以下是您需要回答的一些问题:
你可能会认为“我对所有这些都太聪明了;我只想做一些'简单实用'的事情”,但最终你必须回答所有这些。