欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Java版的實(shí)現JavaScript中的eval()函數
實(shí)現步驟:
1.自定義一個(gè)Java類(lèi),該Java類(lèi)中定義一個(gè)方法來(lái)包含需要被運行的代碼。
2.動(dòng)態(tài)編譯剛剛生成的Java源碼,不在磁盤(pán)上生成源碼,而是直接編譯內存中的Java源碼。
3.動(dòng)態(tài)加載剛剛創(chuàng )建編譯的Java二進(jìn)制碼,編譯好的Java二進(jìn)制碼不是在磁盤(pán)上,而是放在內存中,并定義自己的類(lèi)加載器,負責加載內存中的class文件。
4.通過(guò)反射運行前一步加載的類(lèi)。
[java] view plaincopy
import java.util.Arrays;
import javax.tools.SimpleJavaFileObject;
import javax.tools.JavaFileObject;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
import javax.tools.DiagnosticCollector;
import java.net.URI;
/**
* Description:
* <br/>網(wǎng)站: <a >瘋狂Java聯(lián)盟</a>
* <br/>Copyright (C), 2001-2010, Leeyohn
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author  Leeyohn leeyohn@hotmail.com
* @version  1.0
*/
public class MyClassLoader
extends ClassLoader
{
@Override
public Class<?> findClass(String str) throws ClassNotFoundException
{
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
//用于診斷源代碼編譯錯誤的對象
DiagnosticCollector diagnostics = new DiagnosticCollector();
//內存中的源代碼保存在一個(gè)從JavaFileObject繼承的類(lèi)中
JavaFileObject file = new JavaSourceFromString("Temp", str.toString());
Iterable compilationUnits = Arrays.asList(file);
//建立一個(gè)編譯任務(wù)
JavaCompiler.CompilationTask task = compiler.getTask(null, null, null, null, null, compilationUnits);
//編譯源程序
boolean result = task.call();
if (result)
{
return Class.forName("Temp");
}
return null;
}
}
class JavaSourceFromString extends SimpleJavaFileObject
{
private String name;
private String code;
public JavaSourceFromString(String name, String code)
{
super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE);
this.code = code;
}
public CharSequence getCharContent(boolean ignoreEncodingErrors)
{
return code;
}
}
[c-sharp] view plaincopy
import java.lang.reflect.Method;
/**
* Description:
* <br/>網(wǎng)站: <a >瘋狂Java聯(lián)盟</a>
* <br/>Copyright (C), 2001-2010, Leeyohn
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author  Leeyohn leeyohn@hotmail.com
* @version  1.0
*/
public class Eval
{
public static Object eval(String str) throws Exception
{
StringBuffer sb = new StringBuffer();
sb.append("public class Temp");
sb.append("{");
sb.append("    public Object getObject()");
sb.append("    {");
sb.append("        " + str + "return new Object();");
sb.append("    }");
sb.append("}");
//調用自定義類(lèi)加載器加載編譯在內存中class文件
Class clazz = new MyClassLoader().findClass(sb.toString());
Method method = clazz.getMethod("getObject");
//通過(guò)反射調用方法
return method.invoke(clazz.newInstance());
}
public static void main(String[] args) throws Exception
{
Object rval = eval("System.out.println(/"Hello World/");");
System.out.println(rval);
}
}
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java 7中自動(dòng)關(guān)閉流和catch多個(gè)異常
java動(dòng)態(tài)編譯執行
JAVA版微信支付V3-完全版
采用HTTP協(xié)議上傳文件實(shí)現(java)
手機軟件開(kāi)發(fā)公司
易寶Java版在線(xiàn)支付
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久