第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

動態(tài)代碼執(zhí)行

動態(tài)代碼執(zhí)行

動漫人物 2019-12-06 09:31:43
與動態(tài)SQL相似(動態(tài)字符串在運行時作為SQL執(zhí)行),我們可以動態(tài)運行Java代碼嗎?就像我返回的是Java代碼的String,然后在運行時執(zhí)行一樣。這可能嗎?
查看完整描述

3 回答

?
RISEBY

TA貢獻1856條經(jīng)驗 獲得超5個贊

對于真正的Java代碼,可以使用該JavaCompiler接口。但是,使用起來非常不便,因為它只是一個真正的Java編譯器的接口,該編譯器希望編譯文件中找到的整個類定義。


執(zhí)行運行時提供的代碼的最簡單方法是使用Rhino JavaScript引擎。


這兩個選項僅在Java 6中才有,盡管我相信腳本接口以前已經(jīng)存在,所以如果下載并添加到類路徑中,則可以在較早的JRE中使用Rhino。


查看完整回答
反對 回復 2019-12-06
?
藍山帝景

TA貢獻1843條經(jīng)驗 獲得超7個贊

Javassist

為了運行在運行時提供的任意字符串,您將需要使用字節(jié)碼操作庫(例如Javassist(Wikipedia))。Javassist允許您CtClass基于表示源代碼的字符串創(chuàng)建一個;然后可以Class通過特定的類加載器將其轉(zhuǎn)換為已編譯的對象,以便該類可用于您的應用程序。其他庫需要完成與這兩個步驟相似的操作才能實現(xiàn)相同的目的。

因此有可能,但是它非常重,很可能使您的應用程序難以推理。如果有可能,請考慮靜態(tài)設(shè)計一個非常靈活的類,并讓它接受控制其行為的參數(shù)。


查看完整回答
反對 回復 2019-12-06
?
慕桂英546537

TA貢獻1848條經(jīng)驗 獲得超10個贊

如果您想做的不僅僅是動態(tài)調(diào)用現(xiàn)有方法,則可能需要將String編譯為字節(jié)碼。一種簡單的方法是在類路徑中包含Eclipse / JDT編譯器jar,然后可以使用它將String編譯為Class,然后可以將其加載。

這種類型的動態(tài)代碼生成和執(zhí)行用于將JSP文件轉(zhuǎn)換為Servlet,并在其他程序包(如JasperReports)中使用,以將報告規(guī)范轉(zhuǎn)換為可被調(diào)用的類。

請記住,與任何SQL一樣,如果任何String包含用戶指定的數(shù)據(jù),則必須小心防止代碼注入安全性問題。


查看完整回答
反對 回復 2019-12-06
  • 3 回答
  • 0 關(guān)注
  • 325 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號