- 相關(guān)推薦
Java類別載入器
類加載器(class loader)是Java中的一個(gè)很重要的概念。類加載器負(fù)責(zé)加載 Java 類的字節(jié)代碼到Java虛擬機(jī)中!下面是小編為大家搜索整理的Java類別載入器,希望大家能有所收獲,更多精彩內(nèi)容請及時(shí)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
1 Java的動態(tài)特性
Java的動態(tài)特性有兩種,一是隱式的;另一種是顯示的。隱式的(implicit)方法就是當(dāng)程式設(shè)計(jì)師用到new 這個(gè)Java 關(guān)鍵字時(shí),會讓類別載入器依需求載入您所需要的類別,這種方式使用了隱式的(implicit)方法。顯式的方法,又分成兩種方式,一種是藉由java.lang.Class 里的forName()方法,另一種則
是藉由java.lang.ClassLoader 里的loadClass()方法。您可以任意選用其中一種方法。
2 隱式的動態(tài)特性
在執(zhí)行java文件時(shí),只有單獨(dú)的變量聲明是不會載入相應(yīng)的類的,只有在用new生成實(shí)例時(shí)才載入
如示例所示:
public class Main
public static void main(String args[])
{
A a1 = new A() ;
B b1 ;
}
類A和B相同,如下:
public class A
{
public void print(“using A”);
}
編譯后,可用java –verbose:class Main運(yùn)行,察看輸出結(jié)果。可以看到JVM只載入了A,而沒有載入B.
另外,類的載入只在執(zhí)行到new一個(gè)類時(shí),才載入,如果沒有執(zhí)行到new語句,則不載入。
如://類Office
public class Office
{
public static void main(String[] args)
{
Word myword=null;
Excel myexcel=null;
if (args[0].equals("Word"))
{
myword = new Word();
myword.start();
}
if (args[0].equals("Excel"))
{
myexcel = new Excel();
myexcel.start();
}
}
}
//類Word和Excel基本相同,如下
public class Word
{
public void start()
{
System.out.println("using word");
}
}
在dos命令提示符下,輸入java –verbose Office Excel可以看到JVM只載入Excel類,而不載入Word類。
3 顯示的動態(tài)特性
3.1 java.lang.Class里的forName()方法
在上一個(gè)Office示例中,進(jìn)行如下修改:
一 加入Assembly類
public interface Assembly
{
public void start();
}
二 讓W(xué)ord和Excel類實(shí)現(xiàn)該接口
public class Word implements Assembly
{
public void start()
{
System.out.println("using word");
}
}
三 Office 類如下所示
public class Office
{
public static void main(String[] args) throws Exception
{
java.lang.Class c = java.lang.Class.forName(args[0]);
Object o = c.newInstance();
Assembly a = (Assembly)o;
a.start();
}
}
【Java類別載入器】相關(guān)文章:
java教程之Java編程基礎(chǔ)09-12
專升本考試的類別及差異比較全解析08-25
JAVA的就業(yè)方向10-09
Java 的分支結(jié)構(gòu)10-27
java的應(yīng)用范圍06-24
Java的不同版本10-28
java如何構(gòu)造09-21
java多線程08-31
Java模擬試題04-27
java的多線程09-09