首先你可以使用輸入輸出流(或者你說的可能是要用反射得到程序結果來解析)解析做出*.Java文件。
創(chuàng)新互聯(lián)公司基于成都重慶香港及美國等地區(qū)分布式IDC機房數(shù)據(jù)中心構建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務器托管報價,主機托管價格性價比高,為金融證券行業(yè)服務器機柜租賃,ai人工智能服務器托管提供bgp線路100M獨享,G口帶寬及機柜租用的專業(yè)成都idc公司。
然后可以使用runtime調用Dos下的java編譯命令編譯取得class文件。
然后使用classloader,反射等組合執(zhí)行生成的class文件。
import?javax.tools.*;
import?java.io.*;
/**
*?@author?hardneedl
*/
final?public?class?MyCompile?{
/**
*?@param?args?命令行參數(shù)只有1個,即待編譯的源代碼文件的絕對路徑
*?@throws?FileNotFoundException
*/
public?static?void?main(String...?args)?throws?FileNotFoundException?{
JavaCompiler?compiler?=?ToolProvider.getSystemJavaCompiler();
int?r?=?compiler.run(null,null,null,args[0]);
System.out.println(r?==?0??"成功":"失敗");
}
}
1.Java動態(tài)加載類和靜態(tài)加載類的區(qū)別
new創(chuàng)建對象的方式稱作為靜態(tài)加載,而使用Class.forName("XXX")稱作為動態(tài)加載,它們倆本質的區(qū)別在于靜態(tài)加載的類的源程序在編譯時期加載(必須存在),而動態(tài)加載的類在編譯時期可以缺席(源程序不必存在)。
2.為什么需要動態(tài)加載類
對于我自己的理解,動態(tài)加載類增加了程序的靈活性。比如一個程序中有50個功能,但你可能只會使用其中的一個,如果你用的是靜態(tài)加載的方式,你必須在編譯前提供100個功能的所有定義,否則無法編譯通過,若你使用的是動態(tài)加載機制,則不需要如此大費周章,用哪一個就定義哪一個即可。
靜態(tài)加載:
public class Office_Static {
public static void main(String[] args) {
//new 創(chuàng)建對象,是靜態(tài)加載類,在編譯時刻就需要加載所有的可能使用到的類
if("Word".equals(args[0])){
Word w = new Word();
w.start();
}
if("Excel".equals(args[0])){
Excel e = new Excel();
e.start();
}
}
}
這個程序編譯時必須有Word和Excel這兩個類存在才行,即使判斷后用不到Excel也要加載
動態(tài)加載:
接口OfficeAble :
public interface OfficeAble {
public void start();}
可以的,我說說大概思路,很簡單,你自己具體實現(xiàn)吧,把代碼寫給你沒意義的:
1.將你這段字符串輸出到一個文件里,用Java類文件的方式命名。
2.調用外部javac命令將該文件編譯。
3.用類加載器(ClassLoad)動態(tài)加載新的class文件并用Class.forName()注冊該類,然后就可以正常使用了。
上面的每一步都能在baidu中找到實現(xiàn)方法,自己發(fā)揮吧。
分享題目:java程序動態(tài)代碼 java動態(tài)是什么意思
分享網(wǎng)址:http://muchs.cn/article24/dophpce.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、標簽優(yōu)化、網(wǎng)站內鏈、網(wǎng)頁設計公司、網(wǎng)站收錄、網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)