方法一
参考: java实现字符串转换成可执行代码
使用commons的jexl包
1
2
3
4
5
|
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-jexl</artifactId>
<version>2.0</version>
</dependency>
|
代码示例
1
2
3
4
5
6
7
8
9
10
11
12
|
Map<String,Object> map = new HashMap<String,Object>();
map.put("testService",testService);
map.put("person", person);
String expression="testService.save(person)";
JexlEngine jexl=new JexlEngine();
Expression e = jexl.createExpression(expression);
JexlContext jc = new MapContext();
for(String key:map.keySet()){
jc.set(key, map.get(key));
}
Object o = e.evaluate(jc);
|
方式二
参考:java执行字符串数学表达式 ScriptEngine
使用Java自带的jdk, javax.script.ScriptEngine
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
String str = "a&&b&&c";
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
str = str.replace("a", "true");
str = str.replace("b", "true");
str = str.replace("c", "false");
Object o = null;
try {
o = engine.eval(str);
} catch (ScriptException e) {
e.printStackTrace();
}finally {
System.out.println("o = " + o);
}
|
近期评论