當前位置:編程學習大全網 - 編程軟體 - java怎麽把壹段字符串當做代碼來執行

java怎麽把壹段字符串當做代碼來執行

在javascript中eval()可以實現字符串轉代碼,java中需要使用動態編譯。

把獲得的字符串寫入壹個臨時文件中,然後編譯它,在調用其中的函數。

我們把要轉換的字符串構造壹個完整的類:如果方法是有返回值的.則:

public object eval(string str){

//生成java文件

string s = "class temp{";

s += "object rt(){"

s += "myclass mc = new myclass();"

s += " return mc."+str+"();";

s += "}"

s +="}";

file f = new file("temp.java");

printwriter pw = new printwriter(new filewriter(f));

pw.println(s);

pw.close();

//動態編譯

com.sun.tools.javac.main javac = new com.sun.tools.javac.main();

string[] cpargs = new string[] {"-d", "所在目錄","temp.java"};

int status = javac.compile(cpargs);

if(status!=0){

system.out.println("沒有成功編譯源文件!");

return null;

}

//調用temp的rt方法返回結果:

myclassloader mc = new myclassloader();

class clasz = mc.loadclass("test.class",true);

method rt = clasz.getmethod("rt", new class[]{ string[].class });

return rt.invoke(null, new object[] { new string[0] });

//如果方法沒有返回就直接調用

}

我們可以先寫好多個重載的eval,有返回值和沒有返回值的.以及可以傳遞參數的.

這樣我們就可以用字符串轉換為java的語句來執行.

  • 上一篇:怎麽用樂高拼壹條能扭動的綠皮火車或高鐵用樂高迷妳還沒有巴掌大
  • 下一篇:steam最挑戰數理化的遊戲是什麽
  • copyright 2024編程學習大全網