javan

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

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

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

          1、出現(xiàn)的時期不同: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);
              }
          }
          輸出結(jié)果:
          第一次輸出:
          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

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

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

          評論

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

          d
          2016-04-08 12:46 | 4

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 嘉定区| 始兴县| 白河县| 新和县| 陇西县| 会同县| 工布江达县| 剑阁县| 铁力市| 银川市| 遂昌县| 嘉峪关市| 汤阴县| 睢宁县| 灵山县| 安达市| 金寨县| 阳春市| 关岭| 凤台县| 海宁市| 民县| 襄城县| 蛟河市| 阳谷县| 广东省| 拜泉县| 尤溪县| 太谷县| 兴安盟| 略阳县| 五常市| 綦江县| 奉化市| 叙永县| 大宁县| 海门市| 乐业县| 绿春县| 天台县| 怀远县|