Java中class類的作用是什么-創(chuàng)新互聯(lián)

這篇文章給大家介紹Java中class類的作用是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

成都創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端成都網(wǎng)站建設(shè)公司、網(wǎng)站制作成都網(wǎng)站設(shè)計(jì)、網(wǎng)站定制、成都全網(wǎng)營(yíng)銷、微信小程序、微信公眾號(hào)開(kāi)發(fā)、成都網(wǎng)站營(yíng)銷服務(wù),提供專業(yè)營(yíng)銷思路、內(nèi)容策劃、視覺(jué)設(shè)計(jì)、程序開(kāi)發(fā)來(lái)完成項(xiàng)目落地,為成都塔吊租賃企業(yè)提供源源不斷的流量和訂單咨詢。

Class 類是在Java語(yǔ)言中定義一個(gè)特定類的實(shí)現(xiàn)。一個(gè)類的定義包含成員變量,成員方法,還有這個(gè)類實(shí)現(xiàn)的接口,以及這個(gè)類的父類。Class類的對(duì)象用于表示當(dāng)前運(yùn)行的 Java 應(yīng)用程序中的類和接口。 比如:每個(gè)數(shù)組均屬于一個(gè) Class 類對(duì)象,所有具有相同元素類型和維數(shù)的數(shù)組共享一個(gè)Class 對(duì)象?;镜?Java 類型(boolean, byte, char, short,int, long, float 和 double) 和 void 類型也可表示為 Class 對(duì)象。

以下示例使用 Class 對(duì)象顯示一個(gè)對(duì)象的 Class 名:

void printClassName(Object obj) {
System.out.println("The class of " + obj + " is " + obj.getClass().getName()); }

我們都知道所有的java類都是繼承了object這個(gè)類,在object這個(gè)類中有一個(gè)方法:getclass().這個(gè)方法是用來(lái)取得該類已經(jīng)被實(shí)例化了的對(duì)象的該類的引用,這個(gè)引用指向的是Class類的對(duì)象(呵呵,有點(diǎn)別扭)。我們自己無(wú)法生成一個(gè)Class對(duì)象(構(gòu)造函數(shù)為private),而這個(gè)Class類的對(duì)象是在當(dāng)各類被調(diào)入時(shí),由 Java 虛擬機(jī)自動(dòng)創(chuàng)建 Class 對(duì)象,或通過(guò)類裝載器中的 defineClass 方法生成。 我們生成的對(duì)象都會(huì)有個(gè)字段記錄該對(duì)象所屬類在CLass類的對(duì)象的所在位置。如下圖所示:

Java中class類的作用是什么

我們可以把每個(gè)Class類的對(duì)象當(dāng)做眾多類的代理。而且在每個(gè)Class類對(duì)象中有會(huì)有字段記錄他引用的這個(gè)類的類加載器。如果該字段為null,表示該類的加載器為bootstrap loader.具體原因見(jiàn)我之前分享過(guò)的一篇“《ClassLoader工作機(jī)制 》”一文。

Java中class類的作用是什么

我們知道java中有多個(gè)加載器,每個(gè)加載器能載入多個(gè)類,所以只要取得Class類對(duì)象,就可利用其getClassLoader()方法取得該類加載器的引用。

jvm為每種類管理者獨(dú)一的Class對(duì)象。因此我們可以用雙等號(hào)操作符來(lái)比較對(duì)象:a1.getClass()==A.class;應(yīng)該返回的是true。

forName(String classname)和 forName(Stringclassname,{*}boolean initialze,*ClassLoader *loader)*方法。

該方法返回給定串名相應(yīng)的Class對(duì)象。若給定一個(gè)類或接口的完整路徑名,那么此方法將試圖定位、裝載和連接該類。若成功,返回該類對(duì)象。否則,拋出ClassNotFoundException異常。例如,下面代碼段返回名為java.lang.Thread的運(yùn)行Class描述器。Classt=Class.forName("java.lang.Thread");此方法是需要指定類加載器的,當(dāng)用到僅有一個(gè)String參數(shù)的forName方法時(shí),Class對(duì)象將默認(rèn)調(diào)用當(dāng)前類加載器作為加載器和將第二參數(shù)為true。第二個(gè)參數(shù)說(shuō)明:如果是false時(shí),調(diào)用forName方法只是在命令類加載器載入該類,而不初始化該類的靜態(tài)區(qū)塊,只有當(dāng)該類第一次實(shí)例化時(shí),靜態(tài)區(qū)塊才被調(diào)用。當(dāng)為true時(shí),則載入時(shí)就調(diào)用靜態(tài)區(qū)塊。

getClassLoader()

獲取該類的類裝載器。

getComponentType()

如果當(dāng)前類表示一個(gè)數(shù)組,則返回表示該數(shù)組組件的Class對(duì)象,否則返回null。

getConstructor(Class[])

返回當(dāng)前Class對(duì)象表示的類的指定的公有構(gòu)造子對(duì)象。

getConstructors()

返回當(dāng)前Class對(duì)象表示的類的所有公有構(gòu)造子對(duì)象數(shù)組。

getDeclaredConstructor(Class[])

返回當(dāng)前Class對(duì)象表示的類的指定已說(shuō)明的一個(gè)構(gòu)造子對(duì)象。

getDeclaredConstructors()

返回當(dāng)前Class對(duì)象表示的類的所有已說(shuō)明的構(gòu)造子對(duì)象數(shù)組。

getDeclaredField(String)

返回當(dāng)前Class對(duì)象表示的類或接口的指定已說(shuō)明的一個(gè)域?qū)ο蟆?/p>

getDeclaredFields()

返回當(dāng)前Class對(duì)象表示的類或接口的所有已說(shuō)明的域?qū)ο髷?shù)組。

getDeclaredMethod(String,Class[])

返回當(dāng)前Class對(duì)象表示的類或接口的指定已說(shuō)明的一個(gè)方法對(duì)象。

getDeclaredMethods()

返回Class對(duì)象表示的類或接口的所有已說(shuō)明的方法數(shù)組。

getField(String)

返回當(dāng)前Class對(duì)象表示的類或接口的指定的公有成員域?qū)ο蟆?/p>

getFields()

返回當(dāng)前Class對(duì)象表示的類或接口的所有可訪問(wèn)的公有域?qū)ο髷?shù)組。

getInterfaces()

返回當(dāng)前對(duì)象表示的類或接口實(shí)現(xiàn)的接口。

getMethod(String,Class[])

返回當(dāng)前Class對(duì)象表示的類或接口的指定的公有成員方法對(duì)象。

getMethods()

返回當(dāng)前Class對(duì)象表示的類或接口的所有公有成員方法對(duì)象數(shù)組,包括已聲明的和從父類繼承的方法。

getModifiers()

返回該類或接口的Java語(yǔ)言修改器代碼。

getName()

返回Class對(duì)象表示的類型(類、接口、數(shù)組或基類型)的完整路徑名字符串。

getResource(String)

按指定名查找資源。

getResourceAsStream(String)

用給定名查找資源。

getSigners()

獲取類標(biāo)記。

getSuperclass()

如果此對(duì)象表示除Object外的任一類,那么返回此對(duì)象的父類對(duì)象。

isArray()

如果Class對(duì)象表示一個(gè)數(shù)組則返回true,否則返回false。

isAssignableFrom(Class)

判定Class對(duì)象表示的類或接口是否同參數(shù)指定的Class表示的類或接口相同,或是其父類。

isInstance(Object)

此方法是Java語(yǔ)言instanceof操作的動(dòng)態(tài)等價(jià)方法。

isInterface()

判定指定的Class對(duì)象是否表示一個(gè)接口類型。

isPrimitive()

判定指定的Class對(duì)象是否表示一個(gè)Java的基類型。

newInstance()

創(chuàng)建類的新實(shí)例。

toString()

將對(duì)象轉(zhuǎn)換為字符串。

關(guān)于Java中class類的作用是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前題目:Java中class類的作用是什么-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://www.muchs.cn/article30/dgigso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、企業(yè)網(wǎng)站制作移動(dòng)網(wǎng)站建設(shè)、App設(shè)計(jì)云服務(wù)器、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)