JDK源碼(19)-Package

一、概述

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. 這串字符串。

發佈了263 篇原創文章 · 獲贊 3167 · 訪問量 87萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章