一、概述
Package對象包含有關Java包的實現和規範的版本信息。 該版本信息由加載該類的ClassLoader
實例檢索並提供。 通常,它存儲在與類分發的清單中。構成包的一組類可以實現特定的規範。
在每個ClassLoader
實例中,來自同一個java包的所有類都具有相同的Package對象。 靜態方法允許通過名稱找到一個包,或者找到當前類加載器已知的所有包的集合。
二、方法
//返回此包的名稱。
public String getName()
//返回此程序包實現的規範的標題。
public String getSpecificationTitle()
//在實例中按名稱查找包
public static Package getPackage(String name) {
ClassLoader l = ClassLoader.getClassLoader(Reflection.getCallerClass());
if (l != null) {
return l.getPackage(name);
} else {
return getSystemPackage(name);
}
}
三、package的作用
package 的作用就是 c++ 的 namespace 的作用,防止名字相同的類產生衝突。Java 編譯器在編譯時,直接根據 package 指定的信息直接將生成的 class 文件生成到對應目錄下。如 package aaa.bbb.ccc 編譯器就將該 .java 文件下的各個類生成到 ./aaa/bbb/ccc/ 這個目錄。
import 是爲了簡化使用 package 之後的實例化的代碼。假設 ./aaa/bbb/ccc/ 下的 A 類,假如沒有 import,實例化A類爲:new aaa.bbb.ccc.A(),使用 import aaa.bbb.ccc.A 後,就可以直接使用 new A() 了,也就是編譯器匹配並擴展了 aaa.bbb.ccc. 這串字符串。