簡體   English   中英

基於Java的表達式評估器

[英]Java Based Expression Evaluator

我需要一個表達式評估器,它可以讓我評估如下表達式:

(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。

我可以使用(如果需要擴展)一個好的庫來解決此問題嗎?

謝謝!

Java不是C ++。 您不能重載運算符。

使用流暢的界面在視覺上可能並不那么吸引人,但是我想說這比您提出的要容易。

這很有趣,因為您將需要考慮的不僅僅是EL。 這個想法比您的Weight班要籠統得多。 它更像QuantityWithUnits 以下是您必須回答的一些問題:

  1. 您將如何禁止對具有不同單位的對象進行加減運算?
  2. 除法和乘法時,如何計算新單位?
  3. 您將允許標量乘法和除法嗎?
  4. 您是否會禁止在單位數量中添加標量? 還是您會在幕后悄悄地創建具有類似單位的新對象?
  5. 您還會進行其他常見的物理運算,例如冪運算嗎?
  6. 您將如何使用單位和轉換系統?

您可能會認為“我對所有這些都太聰明了;我只想做一些“簡單實用”的事情,但是最終您必須回答所有這些問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM