早餐2塊2

          if(!java.isExist()) boss.fireOut(me);

          統計

          留言簿(1)

          積分與排名

          閱讀排行榜

          評論排行榜

          認識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類的對象的所在位置。如下圖所示:
                        o_1.jpg
                 我們可以把每個Class類的對象當做眾多類的代理。而且在每個Class類對象中有會有字段記錄他引用的這個類的類加載器。如果該字段為null,表示該類的加載器為bootstrap loader.具體原因見:對于類加載器的認識一文
          1.jpg
          我們知道java中有多個加載器,每個加載器能載入多個類,所以只要取得Class類對象,就可利用其getClassLoader()方法取得該類加載器的引用。
                jvm為每種類管理者獨一的Class對象。因此我們可以用雙等號操作符來比較對象:a1.getClass()==A.class;應該返回的是true。
                forName(String classname)和 forName(String classname,boolean initialze,ClassLoader loader)   方法
                該方法返回給定串名相應的Class 對象。若給定一個類或接口的完整路徑名,那么此方法將試圖定位、裝載和連接該類。若成功,返回該類對象。否則,拋出 ClassNotFoundException 異常。 例如,下面代碼段返回名為java.lang.Thread 的運行 Class 描述器。Class t = 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()
          將對象轉換為字符串。      

          posted on 2005-11-24 15:06 早餐2塊2 閱讀(18480) 評論(6)  編輯  收藏 所屬分類: java基礎

          評論

          # re: 認識java的Class類 2007-04-14 14:15 莪愛羅の◎憶

          你好,吧主,我是JAVA菜鳥,你說的這個關于Class類很詳細,可我還是沒太清楚,這個類究竟有什么作用,能在說的詳細點嗎?
          謝謝~~~~~~~~
          26998495  回復  更多評論   

          # re: 認識java的Class類 2008-05-26 17:01 劉哲

          非常感謝樓主,你的文章把講的內容寫的非常清楚,從中收益!  回復  更多評論   

          # re: 認識java的Class類 2009-04-20 18:25 wu

          寫得好!!!!@劉哲
            回復  更多評論   

          # re: 認識java的Class類 2013-04-13 15:37 fa

          很好  回復  更多評論   

          # re: 認識java的Class類 2014-02-11 13:48 路過

          @莪愛羅の◎憶
          菜鳥目前看這個有點盲目啊,先把基礎搞好吧  回復  更多評論   

          # re: 認識java的Class類 2014-11-30 10:39 陶然楠軒

          頂  回復  更多評論   

          主站蜘蛛池模板: 东山县| 洛隆县| 临颍县| 井陉县| 水城县| 五莲县| 高邑县| 永和县| 易门县| 环江| 茌平县| 孝昌县| 平昌县| 宣汉县| 沧源| 文安县| 宁夏| 嘉禾县| 衡南县| 奉化市| 宝坻区| 锦屏县| 阳朔县| 阿巴嘎旗| 屯门区| 涞源县| 遵义县| 安福县| 夏河县| 福鼎市| 佛坪县| 昭平县| 盘山县| 都匀市| 克什克腾旗| 扶余县| 章丘市| 长垣县| 石阡县| 兴仁县| 赤水市|