adam bien's blog

Operator Overloading Hack in Java, or o24j 📎

In one of my past projects there was a need to perform dynamic computations on Java-Objects. The user was able to input some complex formulas, which had to be interpreted.
I could write of course a custom language for this purpose, but because of my laziness I just passed the objects as well as the formula to groovy, which interpreted and executed the formula for me.
During the review of the new JSR-310 (the Date And Time API for Java) and especially the fluent api, I got the next idea: simulation of the operator overloading for Java-Objects.
So I wanted to do something like this:
   BigDecimal two = new BigDecimal(2);
 BigDecimal three = new BigDecimal(3);

BigDecimal minusOne = Overload.eval("p1-p2", two,three);
assertEquals(-1,minusOne.intValue());

I materialized the idea in the o24j opensource project. It already works - the sources are checked in.
I use groovy internally because it already provides operator overloading. I would like to do the same with JavaScript.
Then no additional libraries would be required.

o24j works with JSR-310 as well :-).