黑馬程序員 JAVA增強 class類

 

             ------- android培訓java培訓期待與您交流! ----------

一:class類:
                   類的實例表示正在運行的 Java 應用程序中的類和接口。枚舉是一種類,註釋是一種接口。每個數組屬於被映射爲 Class 對象的一個類,所有具有相同元素類型和維數的數組都共享該 。

  1、Class是Java程序中各個Java類的總稱;它是反射的基石,通過Class類來使用反射。

    2、Class和class的區別

1)class:Java中的類用於描述一類事物的共性,該類事物有什麼屬性,沒有什麼屬性,至於這個屬性的值是什麼,則由此類的實例對象確定,不同的實例對象有不同的屬性值。

2)Class:指的是Java程序中的各個Java類是屬於同一類事物,都是Java程序的類,這些類稱爲Class。例如人對應的是Person類,Java類對應的就是Class。

3、屬性:類名,類的訪問屬性,類所屬包名,字段名稱列表,方法名稱列表等。

二、對象的創建和使用:

1、創建實例對象:不可用new Class()的方式,因爲Class沒有這樣的構造方法。而是將字節碼對象賦值給Class變量。如Class c1 =Person.class。

如Person類,它的字節碼:首先要將Person的java文件編譯爲class文件放於硬盤上,即爲二進制代碼,再將這些代碼加載到內存中,接着用它創建一個個對象。就是把類的字節碼加載進內存中,再用此字節碼創建一個個對象。當有如Person、Math、Date等等的類,那麼這些字節碼就是分別的一個Class對象。即Class c2 =Date.class;。

2、獲得類的字節碼對象:如Class.forName(”java.lang.String”)即獲得String.class。得到這個字節碼對象有兩種情況:

1)此類已經加載進內存:若要得到此類字節碼,不需要再加載。

2)此類還未加載進內存:類加載器加載此類後,將字節碼緩存起來,forName()方法返回加載進來的字節碼。

3、得到各字節碼對應的實例對象(Class類型)的方式:

1)類名.class:如System.class,String.class等等

2)對象.class:如new Date().getClass()或者d.getClass()。(Date d = new Date())

3)Class.forName(“類名”):如Class.forName(”java.lang.String”)

當獲取類名的時候,是不知道此類的名稱的,forName(字符串參數)方法中傳入字符串型的變量作爲對外訪問的入口,即傳入什麼類名就獲得什麼類名,從而得知相應的類名。

注:

forName()是靜態方法,是反射中使用的一種方式獲取字節碼的實例對象。

每個類的字節碼對象只有唯一的一個,如任何字符串對象,對應唯一的String.clas字節碼。

4、九個預定義的Class:

1)包括八種基本類型(byte、short、int、long、float、double、char、boolean)的字節碼對象和一種返回值爲void類型的void.class。

2)Integer.TYPE是Integer類的一個常量,它代表此包裝類型包裝的基本類型的字節碼,所以和int.class是相等的。

基本數據類型的字節碼都可以用與之對應的包裝類中的TYPE常量表示

數組類型的Class實例對象,可以用Class.isArray()方法判斷是否爲數組類型的。

5、總結:只要是在源程序中出現的類型都有各自的Class實例對象,如int[].class、void.class等。

三、方法:(API)

1、static Class forName(String className)

           返回與給定字符串名的類或接口的相關聯的Class對象。

2、Class getClass()

           返回的是Object運行時的類,即返回Class對象即字節碼對象

3、Constructor getConstructor()

              返回Constructor對象,它反映此Class對象所表示的類的指定公共構造方法。

4、Field getField(String name)

                 返回一個Field對象,它表示此Class對象所代表的類或接口的指定公共成員字段。

5、Field[] getFields()

                  返回包含某些Field對象的數組,表示所代表類中的成員字段。

6、Method getMethod(String name,Class… parameterTypes)

                  返回一個Method對象,它表示的是此Class對象所代表的類的指定公共成員方法。

7、Method[] getMehtods()

                  返回一個包含某些Method對象的數組,是所代表的的類中的公共成員方法。

8、String getName()

               以String形式返回此Class對象所表示的實體名稱。

9、String  getSuperclass()

               返回此Class所表示的類的超類的名稱

10、boolean isArray()

                判定此Class對象是否表示一個數組

11、boolean isPrimitive()

                 判斷指定的Class對象是否是一個基本類型。

           ------- android培訓java培訓期待與您交流! ----------

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章