java實現字串轉換成可執行程式碼
阿新 • • 發佈:2019-02-12
使用commons的jexl可實現將字串變成可執行程式碼的功能,我寫了一個類來封裝這個功能:
Java程式碼- import java.util.Map;
- import org.apache.commons.jexl2.Expression;
- import org.apache.commons.jexl2.JexlContext;
- import org.apache.commons.jexl2.JexlEngine;
- import org.apache.commons.jexl2.MapContext;
- /**
- * 動態載入方法
-
* @author wangyfc
- *
- */
- public class DyMethodUtil {
- public static Object invokeMethod(String jexlExp,Map<String,Object> map){
- JexlEngine jexl=new JexlEngine();
- Expression e = jexl.createExpression(jexlExp);
- JexlContext jc = new MapContext();
-
for(String key:map.keySet()){
- jc.set(key, map.get(key));
- }
- if(null==e.evaluate(jc)){
- return "";
- }
- return e.evaluate(jc);
- }
- }
呼叫方式:
Java程式碼- Map<String,Object> map=new HashMap<String,Object>();
- map.put("testService",testService);
-
map.put("person"
- String expression="testService.save(person)";
- DyMethodUtil.invokeMethod(expression,map);