您好,登錄后才能下訂單哦!
這篇文章給大家介紹Java中class類的作用是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
Class 類是在Java語言中定義一個特定類的實現。一個類的定義包含成員變量,成員方法,還有這個類實現的接口,以及這個類的父類。Class類的對象用于表示當前運行的 Java 應用程序中的類和接口。 比如:每個數組均屬于一個 Class 類對象,所有具有相同元素類型和維數的數組共享一個Class 對象。基本的 Java 類型(boolean, byte, char, short,int, long, float 和 double) 和 void 類型也可表示為 Class 對象。
以下示例使用 Class 對象顯示一個對象的 Class 名:
void printClassName(Object obj) { System.out.println("The class of " + obj + " is " + obj.getClass().getName()); }
我們都知道所有的java類都是繼承了object這個類,在object這個類中有一個方法:getclass().這個方法是用來取得該類已經被實例化了的對象的該類的引用,這個引用指向的是Class類的對象(呵呵,有點別扭)。我們自己無法生成一個Class對象(構造函數為private),而這個Class類的對象是在當各類被調入時,由 Java 虛擬機自動創建 Class 對象,或通過類裝載器中的 defineClass 方法生成。 我們生成的對象都會有個字段記錄該對象所屬類在CLass類的對象的所在位置。如下圖所示:
我們可以把每個Class類的對象當做眾多類的代理。而且在每個Class類對象中有會有字段記錄他引用的這個類的類加載器。如果該字段為null,表示該類的加載器為bootstrap loader.具體原因見我之前分享過的一篇“《ClassLoader工作機制 》”一文。
我們知道java中有多個加載器,每個加載器能載入多個類,所以只要取得Class類對象,就可利用其getClassLoader()方法取得該類加載器的引用。
jvm為每種類管理者獨一的Class對象。因此我們可以用雙等號操作符來比較對象:a1.getClass()==A.class;應該返回的是true。
forName(String classname)和 forName(Stringclassname,{*}boolean initialze,*ClassLoader *loader)*方法。
該方法返回給定串名相應的Class對象。若給定一個類或接口的完整路徑名,那么此方法將試圖定位、裝載和連接該類。若成功,返回該類對象。否則,拋出ClassNotFoundException異常。例如,下面代碼段返回名為java.lang.Thread的運行Class描述器。Classt=Class.forName("java.lang.Thread");此方法是需要指定類加載器的,當用到僅有一個String參數的forName方法時,Class對象將默認調用當前類加載器作為加載器和將第二參數為true。第二個參數說明:如果是false時,調用forName方法只是在命令類加載器載入該類,而不初始化該類的靜態區塊,只有當該類第一次實例化時,靜態區塊才被調用。當為true時,則載入時就調用靜態區塊。
getClassLoader()
獲取該類的類裝載器。
getComponentType()
如果當前類表示一個數組,則返回表示該數組組件的Class對象,否則返回null。
getConstructor(Class[])
返回當前Class對象表示的類的指定的公有構造子對象。
getConstructors()
返回當前Class對象表示的類的所有公有構造子對象數組。
getDeclaredConstructor(Class[])
返回當前Class對象表示的類的指定已說明的一個構造子對象。
getDeclaredConstructors()
返回當前Class對象表示的類的所有已說明的構造子對象數組。
getDeclaredField(String)
返回當前Class對象表示的類或接口的指定已說明的一個域對象。
getDeclaredFields()
返回當前Class對象表示的類或接口的所有已說明的域對象數組。
getDeclaredMethod(String,Class[])
返回當前Class對象表示的類或接口的指定已說明的一個方法對象。
getDeclaredMethods()
返回Class對象表示的類或接口的所有已說明的方法數組。
getField(String)
返回當前Class對象表示的類或接口的指定的公有成員域對象。
getFields()
返回當前Class對象表示的類或接口的所有可訪問的公有域對象數組。
getInterfaces()
返回當前對象表示的類或接口實現的接口。
getMethod(String,Class[])
返回當前Class對象表示的類或接口的指定的公有成員方法對象。
getMethods()
返回當前Class對象表示的類或接口的所有公有成員方法對象數組,包括已聲明的和從父類繼承的方法。
getModifiers()
返回該類或接口的Java語言修改器代碼。
getName()
返回Class對象表示的類型(類、接口、數組或基類型)的完整路徑名字符串。
getResource(String)
按指定名查找資源。
getResourceAsStream(String)
用給定名查找資源。
getSigners()
獲取類標記。
getSuperclass()
如果此對象表示除Object外的任一類,那么返回此對象的父類對象。
isArray()
如果Class對象表示一個數組則返回true,否則返回false。
isAssignableFrom(Class)
判定Class對象表示的類或接口是否同參數指定的Class表示的類或接口相同,或是其父類。
isInstance(Object)
此方法是Java語言instanceof操作的動態等價方法。
isInterface()
判定指定的Class對象是否表示一個接口類型。
isPrimitive()
判定指定的Class對象是否表示一個Java的基類型。
newInstance()
創建類的新實例。
toString()
將對象轉換為字符串。
關于Java中class類的作用是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。