在项目中要解析包括加减乘除和自定义函数,开始本来试着用W3Eval方法W3Eval[url]
http://www.ibm.com/developerworks/cn/java/j-w3eva/[/url],还是感觉比较复杂,所以选择使用jexl.
来看一个简单的例子
1.创建引擎 2.利用引擎创建表达式
3.将要传入表达式的参数封装在map中 4.计算表达式
JexlEngine还提供动态调用API
http://www.ibm.com/developerworks/cn/java/j-w3eva/[/url],还是感觉比较复杂,所以选择使用jexl.
来看一个简单的例子
1.创建引擎 2.利用引擎创建表达式
3.将要传入表达式的参数封装在map中 4.计算表达式
// Create a JexlEngine (could reuse one instead)
JexlEngine jexl = new JexlEngine();
// Create an expression object
String jexlExp = "foo.innerFoo.bar()";
Expression e = jexl.createExpression( jexlExp );
// Create a context and add data
JexlContext jc = new MapContext();
jc.set("foo", new Foo() );
// Now evaluate the expression, getting the result
Object o = e.evaluate(jc);
JexlEngine还提供动态调用API
•JexlEngine.newInstance(java.lang.Class, java.lang.Object...)
•JexlEngine.setProperty(java.lang.Object, java.lang.String, java.lang.Object)
•JexlEngine.getProperty(java.lang.Object, java.lang.String)
•JexlEngine.invokeMethod(java.lang.Object, java.lang.String, java.lang.Object...)