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 閱讀(2984) 評論(1)  編輯  收藏

          評論

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

          d
          2016-04-08 12:46 | 4

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


          網站導航:
           
          主站蜘蛛池模板: 谷城县| 定兴县| 达孜县| 阜新市| 奈曼旗| 新田县| 新乡县| 泽库县| 巴彦县| 荥阳市| 江安县| 寻甸| 灵丘县| 永康市| 巴东县| 龙里县| 金阳县| 盐源县| 抚州市| 新蔡县| 岱山县| 阿巴嘎旗| 武川县| 大化| 盐津县| 汝州市| 本溪| 马关县| 东丰县| 喀什市| 商水县| 芒康县| 闽清县| 稻城县| 常山县| 绥棱县| 榆树市| 金门县| 黄浦区| 苏尼特左旗| 沾益县|