JDK源码解析之 Java.lang.Package
如果我們?cè)贑lass對(duì)象上調(diào)用getPackage方法,就可以得到描述該類(lèi)所在包的Package對(duì)象(Package類(lèi)是在java.lang中定義的)。我們也可以用包名通過(guò)調(diào)用靜態(tài)方法getPackage或者調(diào)用靜態(tài)方法getPackages(該方法返回由系統(tǒng)中所有已知包構(gòu)成的數(shù)組)來(lái)獲得Package對(duì)象。getName方法可以返回包的全名。
Package對(duì)象的使用與其他反射類(lèi)型完全不同,即我們不能在運(yùn)行時(shí)創(chuàng)建或操縱包。我們可以使用Package對(duì)象來(lái)獲取有關(guān)包的信息,諸如包的用途、誰(shuí)創(chuàng)建了包、包的版本等。我們將把這些內(nèi)容延后到后面詳細(xì)介紹包時(shí)再討論。
一、類(lèi)定義
public class Package implements java.lang.reflect.AnnotatedElement {}reflect.AnnotatedElement :表示目前正在此 VM 中運(yùn)行的程序的一個(gè)已注釋元素。該接口允許反射性地讀取注釋。由此接口中的方法返回的所有注釋都是不可變并且可序列化的。
二、常用方法
1、getPackage方法
一個(gè)靜態(tài)方法,可以使用類(lèi)名進(jìn)行訪問(wèn),如果嘗試使用類(lèi)對(duì)象訪問(wèn)該方法,則不會(huì)收到錯(cuò)誤
static Package getPackage(Class<?> c) {String name = c.getName();int i = name.lastIndexOf('.');if (i != -1) {name = name.substring(0, i);ClassLoader cl = c.getClassLoader();if (cl != null) {return cl.getPackage(name);} else {return getSystemPackage(name);}} else {return null;} }當(dāng)調(diào)用方的ClassLoader實(shí)例存在null時(shí),將使用getPackage()方法在給定的調(diào)用方的ClassLoader實(shí)例中按給定的包名稱(chēng)搜索一個(gè)包,然后搜索該System ClassLoader實(shí)例加載的包的捆綁包以確定命名的包。
三、拓展
1、關(guān)于Java.lang
java.lang包是java語(yǔ)言的核心,它提供了java中的基礎(chǔ)類(lèi)。包括基本Object類(lèi)、Class類(lèi)、String類(lèi)、基本類(lèi)型的包裝類(lèi)、基本的數(shù)學(xué)類(lèi)等等最基本的類(lèi)。我們介紹一下Java 8中的java.lang包。主要類(lèi)如下圖:
2、Java中常用包
java.lang 該包提供了Java編程的基礎(chǔ)類(lèi),例如 Object、Math、String、StringBuffer、System、Thread等,不使用該包就很難編寫(xiě)Java代碼了。
java.util 該包提供了包含集合框架、遺留的集合類(lèi)、事件模型、日期和時(shí)間實(shí)施、國(guó)際化和各種實(shí)用工具類(lèi)(字符串標(biāo)記生成器、隨機(jī)數(shù)生成器和位數(shù)組)。
java.io 該包通過(guò)文件系統(tǒng)、數(shù)據(jù)流和序列化提供系統(tǒng)的輸入與輸出。
java.net 該包提供實(shí)現(xiàn)網(wǎng)絡(luò)應(yīng)用與開(kāi)發(fā)的類(lèi)。
java.sql 該包提供了使用Java語(yǔ)言訪問(wèn)并處理存儲(chǔ)在數(shù)據(jù)源(通常是一個(gè)關(guān)系型數(shù)據(jù)庫(kù))中的數(shù)據(jù)API。
java.awt 這兩個(gè)包提供了GUI設(shè)計(jì)與開(kāi)發(fā)的類(lèi)。java.awt包提供了創(chuàng)建界面和繪制圖形圖像的所有類(lèi),而javax.swing包提供了一組“輕量級(jí)”的組件,盡量讓這些組件在所有平臺(tái)上的工作方式相同。
javax.swing是 Java 為圖形界面應(yīng)用開(kāi)發(fā)提供的一組工具包,是 Java 基礎(chǔ)類(lèi)的一部分。Swing 包含了構(gòu)建圖形界面(GUI)的各種組件,如: 窗口、標(biāo)簽、按鈕、文本框等。Swing 提供了許多比 AWT 更好的屏幕顯示元素,使用純 Java 實(shí)現(xiàn),能夠更好的兼容跨平臺(tái)運(yùn)行。
java.text 提供了與自然語(yǔ)言無(wú)關(guān)的方式來(lái)處理文本、日期、數(shù)字和消息的類(lèi)和接口。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的JDK源码解析之 Java.lang.Package的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CENTOS5下VSFTPD的设置
- 下一篇: oracle命令行安装