javan

          i like java
          隨筆 - 0, 文章 - 28, 評論 - 2, 引用 - 0
          數據加載中……

          Class.forName、Class.class(屬性)、getClass()的區別

          Class.forName、Class.class(屬性)、getClass()的區別

          1、出現的時期不同:Class.forName()在運行時加載;Class.class和getClass()是在編譯器加載
          2、Class.class只是在編譯時用來存放類的相關信息,并沒有實例化對象;而getClass()既實例化了對象,又存放了類信息
          3、例:
             Test t=new Test();
             Class c=t.getClass();
            
             Class c=Class.class;

             Class c=Class.forName("Test");



          package com.hsia.util;

          public class Test {

              Test(){}
              
              private String test;
              
              public String getTest() {
                  return test;
              }

              public void setTest(String test) {
                  this.test = test;
              }
              
              public static void f(Test t)
              {
                  System.out.print(t);
              }

              public static void main(String[] arg) throws Exception
              {    
                  System.out.println(Test.class);
                  System.out.println(new Test());
                  System.out.println(Test.class.newInstance());
           
                  Class clas = null;
                  try {
                    clas = Class.forName("Test");        //此處必須為完整路徑  com.hsia.util.Test
                    System.out.println(clas);
                  } catch (ClassNotFoundException ex) {
                    // handle exception case
                  }
                  System.out.println(clas);
                  
                  Test t=new Test();
                  System.out.println(t.getClass().newInstance());
                  System.out.println(t);
                  
                  f(t);
              }
          }
          輸出結果:
          第一次輸出:
          class com.hsia.util.Test
          com.hsia.util.Test@1df38fd
          com.hsia.util.Test@16a786
          null
          com.hsia.util.Test@1efb836
          com.hsia.util.Test@126e85f
          com.hsia.util.Test@126e85f

          第二次輸出:
          class com.hsia.util.Test
          com.hsia.util.Test@de6ced
          com.hsia.util.Test@c17164
          null
          com.hsia.util.Test@61de33
          com.hsia.util.Test@14318bb
          com.hsia.util.Test@14318bb

          結論:
          Test.class:輸出類名
          new Test():輸出類實例的內存物理地址
          Test.class.newInstance():輸出類實例的內存物理地址
          t.getClass().newInstance():輸出類實例的內存物理地址
          t:也是類實例內存地址

          posted on 2009-05-26 17:09 whl 閱讀(2985) 評論(1)  編輯  收藏

          評論

          # re: Class.forName、Class.class(屬性)、getClass()的區別  回復  更多評論   

          d
          2016-04-08 12:46 | 4

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 娱乐| 密山市| 资源县| 容城县| 绥滨县| 祁门县| 永昌县| 潜山县| 晴隆县| 华阴市| 太谷县| 灵川县| 丽江市| 屏边| 墨江| 金塔县| 隆德县| 长治县| 新巴尔虎左旗| 乌审旗| 阿瓦提县| 左贡县| 化州市| 东台市| 宁夏| 井研县| 西充县| 磐安县| 泸水县| 修武县| 航空| 吉首市| 鄂托克前旗| 陇南市| 乌拉特前旗| 安塞县| 内丘县| 缙云县| 祁东县| 习水县| 石泉县|