java如何加載動(dòng)態(tài)代碼 java怎么動(dòng)態(tài)加載jar包

Java如何實(shí)現(xiàn)反射靜態(tài)加載和動(dòng)態(tài)加載實(shí)例代碼詳解

1.Java動(dòng)態(tài)加載類和靜態(tài)加載類的區(qū)別

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供武川網(wǎng)站建設(shè)、武川做網(wǎng)站、武川網(wǎng)站設(shè)計(jì)、武川網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、武川企業(yè)網(wǎng)站模板建站服務(wù),10余年武川做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

new創(chuàng)建對象的方式稱作為靜態(tài)加載,而使用Class.forName("XXX")稱作為動(dòng)態(tài)加載,它們倆本質(zhì)的區(qū)別在于靜態(tài)加載的類的源程序在編譯時(shí)期加載(必須存在),而動(dòng)態(tài)加載的類在編譯時(shí)期可以缺席(源程序不必存在)。

2.為什么需要?jiǎng)討B(tài)加載類

對于我自己的理解,動(dòng)態(tài)加載類增加了程序的靈活性。比如一個(gè)程序中有50個(gè)功能,但你可能只會(huì)使用其中的一個(gè),如果你用的是靜態(tài)加載的方式,你必須在編譯前提供100個(gè)功能的所有定義,否則無法編譯通過,若你使用的是動(dòng)態(tài)加載機(jī)制,則不需要如此大費(fèi)周章,用哪一個(gè)就定義哪一個(gè)即可。

靜態(tài)加載:

public class Office_Static {

public static void main(String[] args) {

//new 創(chuàng)建對象,是靜態(tài)加載類,在編譯時(shí)刻就需要加載所有的可能使用到的類

if("Word".equals(args[0])){

Word w = new Word();

w.start();

}

if("Excel".equals(args[0])){

Excel e = new Excel();

e.start();

}

}

}

這個(gè)程序編譯時(shí)必須有Word和Excel這兩個(gè)類存在才行,即使判斷后用不到Excel也要加載

動(dòng)態(tài)加載:

接口OfficeAble :

public interface OfficeAble {

public void start();}

一個(gè)java工程在運(yùn)行的時(shí)候怎么動(dòng)態(tài)加載另一個(gè)java工程?

直接寫上 new ClassFromPrj2(); 不用你手工“加載”,Java 中加載默認(rèn)是由 JVM 虛擬器自動(dòng)完成的,只要引用到的類ClassFromPrj2 在 classpath 中即可。等你達(dá)到中級(jí)水平,知道 Java Reflection 和 ClassLoader 之后你就知道是怎么回事了。

我是假設(shè) loadJavaPrj 是第一個(gè)工程,假設(shè)它使用了第二個(gè)工程的類 ClassFromPrj2 的話,那就是

ClassFromPrj2 worker = new ClassFromPrj2();

worker.xxx();

你在運(yùn)行中需要確保的是:prj2 這個(gè)工程的 jar 或 class folder 出現(xiàn)在 java -cp XXX 這個(gè) classpath (-classpath 或 -cp) 參數(shù)列表中就可以了。

你在eclipse 項(xiàng)目的 .classpath 文件中發(fā)現(xiàn)的東西表明你還是嘗試了解工具的細(xì)節(jié),但那個(gè)僅僅是 Eclipse 用來幫我們生成命令行參數(shù)的配置文件,最終我們需要知道 javac 或 java 這樣的命令行需要什么參數(shù),這一點(diǎn)一般書上和老師都會(huì)講到(但他們一般不會(huì)講解Eclipse怎么工作的)。

怎樣動(dòng)態(tài)執(zhí)行一段JAVA代碼

首先你可以使用輸入輸出流(或者你說的可能是要用反射得到程序結(jié)果來解析)解析做出*.Java文件。

然后可以使用runtime調(diào)用Dos下的java編譯命令編譯取得class文件。

然后使用classloader,反射等組合執(zhí)行生成的class文件。

本文名稱:java如何加載動(dòng)態(tài)代碼 java怎么動(dòng)態(tài)加載jar包
網(wǎng)站URL:http://muchs.cn/article28/doscojp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站營銷虛擬主機(jī)、ChatGPT、網(wǎng)站排名、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)