天天看點

java import機制 說明

java中有兩種包的導入機制,總結如下:

單類型導入(single-type-import), 例如 import java.io.File;

按需類型導入(type-import-on-demand),例如 import java.io.*;

java編譯器會從啟動目錄(bootstrap),擴充目錄(extension)和使用者類路徑下去定位需要導入的類,而這些目錄僅僅是給出了類的頂層目錄。編譯器的類檔案定位方法大緻可以了解為如下公式:

  頂層路徑名 \ 包名 \ 檔案名.class = 絕對路徑

  對于單類型導入很簡單,因為包明和檔案名都已經确定,是以可以一次性查找定位。

  對于按需類型導入則比較複雜,編譯器會把包名和檔案名進行排列組合,然後對所有的可能性進行類檔案查找定位

譯器發現了兩個同名的類,那麼就會報錯。要删除你不用的那個類,然後再編譯。

了解以上原理之後,我們可以得出這樣的結論:按需類型導入是絕對不會降低Java代碼的執行效率的,但會影響到Java代碼的編譯速度。

檢視JDK的源代碼就知道SUN的軟體工程師一般不會使用按需類型導入。因為使用單類型導入至少有以下兩點好處:

1。提高編譯速度。

2。避免命名沖突。(例如:當你import java.awt.*;import java.util.*後,使用List的時候編譯器将會出編譯錯誤)