Java類別的載入器
類加載器(class loader)是Java中的一個很重要的概念。類加載器負責加載 Java 類的字節代碼到Java虛擬機中!下面是小編為大家搜索整理的Java類別載入器,希望大家能有所收穫,更多精彩內容請及時關注我們考試網!
1 Java的動態特性
Java的動態特性有兩種,一是隱式的;另一種是顯示的。隱式的(implicit)方法就是當程式設計師用到new 這個Java 關鍵字時,會讓類別載入器依需求載入您所需要的類別,這種方式使用了隱式的(implicit)方法。顯式的方法,又分成兩種方式,一種是藉由s 裏的forName()方法,另一種則
是藉由sLoader 裏的loadClass()方法。您可以任意選用其中一種方法。
2 隱式的動態特性
在執行java文件時,只有單獨的'變量聲明是不會載入相應的類的,只有在用new生成實例時才載入
如示例所示:
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運行,察看輸出結果。可以看到JVM只載入了A,而沒有載入B.
另外,類的載入只在執行到new一個類時,才載入,如果沒有執行到new語句,則不載入。
如://類Office
public class Office
{
public static void main(String[] args)
{
Word myword=null;
Excel myexcel=null;
if (args[0]ls("Word"))
{
myword = new Word();
t();
}
if (args[0]ls("Excel"))
{
myexcel = new Excel();
t();
}
}
}
//類Word和Excel基本相同,如下
public class Word
{
public void start()
{
tln("using word");
}
}
在dos命令提示符下,輸入java –verbose Office Excel可以看到JVM只載入Excel類,而不載入Word類。
3 顯示的動態特性
3.1 s裏的forName()方法
在上一個Office示例中,進行如下修改:
一 加入Assembly類
public interface Assembly
{
public void start();
}
二 讓Word和Excel類實現該接口
public class Word implements Assembly
{
public void start()
{
tln("using word");
}
}
三 Office 類如下所示
public class Office
{
public static void main(String[] args) throws Exception
{
s c = ame(args[0]);
Object o = nstance();
Assembly a = (Assembly)o;
t();
}
}
-
java xp環境變量設置
本文實例為大家分享了java的環境變量設置方法,供大家參考,具體內容如下安裝好jdk後找到我的電腦(右鍵)——》屬性——》高級選項卡——》環境變量,裏面有管理員的用户變量,有系統變量。選哪一個都無所謂,我選的是Administrator的用户變量即管理員的.用户變量,點擊“新...
-
在Java裏處理文件的技巧
導讀:看到太多的凌亂的,不安全的處理文件的代碼了。可以説每個項目都會有人喜歡寫自己的一些FileUitl。下面是小編為大家整理的在Java裏處理文件的技巧,歡迎參考~實用的工具類,Path,Paths,Files,FileSystem有一些很靈活的處理方法://得到一個Path對象Pathpath=("/test/...
-
Java開發崗位面試題
為幫助參加Java開發崗位面試的朋友們做好準備,以下是本站小編搜索整理的一份Java集合面試問題40個【附答案】,供參考練習,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!一、Java基礎1、String類為什麼是final的。2、HashMap的源碼,實現原...
-
2017計算機二級考試Java練習題及答案
以下是應屆畢業生考試網小編整理的2017年計算機二級考試Java練習題及答案,供考生參考。更多計算機等級考試相關信息請關注應屆畢業生計算機等級考試網。1[單選題]下列方法被調用後,一定使調用線程改變當前狀態的是()。fy()d()p()ive()參考答案:C參考解析:線程調用s...