Java實(shí)現(xiàn)字符串轉(zhuǎn)換成可執(zhí)行代碼的方法
使用commons的jexl可實(shí)現(xiàn)將字符串變成可執(zhí)行代碼的功能,我寫了一個(gè)類來封裝這個(gè)功能:
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;
/**
* 動態(tài)加載方法
*
*/
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);
}
}
調(diào)用
Map<String,Object> map=new HashMap<String,Object>();
map.put("testService",testService);
map.put("person",person);
String expression="testService.save(person)";
DyMethodUtil.invokeMethod(expression,map);
以上這篇Java實(shí)現(xiàn)字符串轉(zhuǎn)換成可執(zhí)行代碼的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis中map的應(yīng)用與模糊查詢實(shí)現(xiàn)代碼
這篇文章主要介紹了MyBatis中map的應(yīng)用與模糊查詢實(shí)現(xiàn)代碼,文中通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-11-11
SpringBoot?AOP中JoinPoint的使用方式和通知切點(diǎn)表達(dá)式
這篇文章主要介紹了SpringBoot?AOP中JoinPoint的使用方式和通知切點(diǎn)表達(dá)式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
基于Springboot商品進(jìn)銷存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
本項(xiàng)目基于springboot實(shí)現(xiàn)一個(gè)進(jìn)銷存管理系統(tǒng),主要用戶開設(shè)網(wǎng)店的相關(guān)商品的進(jìn)貨、銷售、庫存的管理,功能比較完整,需要的可以參考一下2022-08-08
淺析Java ClassName.this中類名.this關(guān)鍵字的理解
Java ClassName.this中類名.this關(guān)鍵字 的理解大家都了解多少,有不太了解的朋友可以參考下本文一起學(xué)習(xí)學(xué)習(xí)2016-05-05

