Java實現字符串轉換成可執行代碼
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:申請域名、雅安服務器托管、營銷軟件、網站建設、唐河網站維護、網站推廣。
使用commons的jexl可實現將字符串變成可執行代碼的功能,我寫了一個類來封裝這個功能:
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;
/**
* 動態加載方法
*
*/
public class DyMethodUtil {
public static Object invokeMethod(String jexlExp,MapString,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);
}
}
調用
MapString,Object map=new HashMapString,Object();
map.put("testService",testService);
map.put("person",person);
String expression="testService.save(person)";
DyMethodUtil.invokeMethod(expression,map);
上代碼:
import?java.util.Scanner;
public?class?Main?{
public?static?void?main(String[]?args)?{
Scanner?sc?=?new?Scanner(System.in);
System.out.println("請輸入漢字:");
String?input?=?sc.nextLine();
if?(input.length()?==?0)?{
System.out.println("輸入錯誤");
return;
}
System.out.println("漢字轉unicode結果:");
char[]?chars?=?input.toCharArray();
for?(int?i?=?0;?i??chars.length;?i++)?{
String?unicode?=?Integer.toHexString(chars[i]);
if?(unicode.length()?=?2)?{
//?不足四位前面加0補齊
unicode?=?"00"?+?unicode;
}
unicode?=?"\\u"?+?unicode;
System.out.println(chars[i]?+?":?"?+?unicode);
}
}
}
方法是有的,但不全實際.
首先,你要理解,JAVA代碼的運行是要被編譯成字節碼codebyte后才能被執行的,以你問題中的意思,那個字符串應該是在怎么代碼被編譯后項目在運行時,再傳入的參數,這時,要想把傳入參數的字符串當成JAVA代碼來運行,只有一種辦法,就是把傳進來的字符串轉換成字節碼,并且,要虛擬加一個方法體出來.這也不是不可行,可用的技術有asm.cglib等字節碼技術.但你想,對于你的問題.這樣有實際的意義嗎
你還不如,把system.out.print重定義成新的外調方法調動來的清晰
文章名稱:文字轉java代碼 java漢字編碼轉換
分享網址:http://m.newbst.com/article30/dophcpo.html
成都網站建設公司_創新互聯,為您提供做網站、網站維護、網站內鏈、App設計、品牌網站建設、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯