1. 程式人生 > >java實現字串轉換成可執行程式碼

java實現字串轉換成可執行程式碼

使用commons的jexl可實現將字串變成可執行程式碼的功能,我寫了一個類來封裝這個功能:

Java程式碼  收藏程式碼
  1. import java.util.Map;  
  2. import org.apache.commons.jexl2.Expression;  
  3. import org.apache.commons.jexl2.JexlContext;  
  4. import org.apache.commons.jexl2.JexlEngine;  
  5. import org.apache.commons.jexl2.MapContext;  
  6. /** 
  7.  * 動態載入方法 
  8.  * @author wangyfc
     
  9.  * 
  10.  */  
  11. public class DyMethodUtil {  
  12.     public static Object invokeMethod(String jexlExp,Map<String,Object> map){  
  13.         JexlEngine jexl=new JexlEngine();  
  14.         Expression e = jexl.createExpression(jexlExp);  
  15.         JexlContext jc = new MapContext();  
  16.         for(String key:map.keySet()){  
  17.             jc.set(key, map.get(key));  
  18.         }  
  19.         if(null==e.evaluate(jc)){  
  20.             return "";  
  21.         }  
  22.         return e.evaluate(jc);  
  23.     }  
  24. }  

呼叫方式:

Java程式碼  收藏程式碼
  1. Map<String,Object> map=new HashMap<String,Object>();  
  2. map.put("testService",testService);  
  3. map.put("person"
    ,person);  
  4. String expression="testService.save(person)";  
  5. DyMethodUtil.invokeMethod(expression,map);