javan

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

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

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

          1、出現(xiàn)的時(shí)期不同:Class.forName()在運(yùn)行時(shí)加載;Class.class和getClass()是在編譯器加載
          2、Class.class只是在編譯時(shí)用來存放類的相關(guān)信息,并沒有實(shí)例化對(duì)象;而getClass()既實(shí)例化了對(duì)象,又存放了類信息
          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():輸出類實(shí)例的內(nèi)存物理地址
          Test.class.newInstance():輸出類實(shí)例的內(nèi)存物理地址
          t.getClass().newInstance():輸出類實(shí)例的內(nèi)存物理地址
          t:也是類實(shí)例內(nèi)存地址

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

          評(píng)論

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

          d
          2016-04-08 12:46 | 4

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 故城县| 得荣县| 淳安县| 沁阳市| 孝昌县| 綦江县| 精河县| 兰考县| 天全县| 博野县| 乾安县| 合肥市| 周宁县| 朝阳县| 色达县| 中江县| 治县。| 涟源市| 会昌县| 凤城市| 闽清县| 志丹县| 雷州市| 奈曼旗| 页游| 尖扎县| 万载县| 台中县| 东莞市| 宣武区| 海宁市| 贺州市| 西吉县| 鄂托克旗| 韶山市| 视频| 江西省| 泌阳县| 阿克陶县| 阿尔山市| 江北区|