Chan Chen Coding...

          Java中的getName(), .class 和forName()的區(qū)別

          1. 首先這個(gè)函數(shù)或?qū)傩远际怯脕?lái)獲得一個(gè)類型的Class對(duì)象。每一個(gè)類型在java虛擬機(jī)中都對(duì)應(yīng)一個(gè)Class對(duì)象,該對(duì)象用于java虛擬機(jī)加載一個(gè)該類型的對(duì)象到內(nèi)存中。
          2. 其次getClass都是用于一個(gè)Custom object的,.class用于一個(gè)類型(系統(tǒng)封裝或者用戶自定義類型),比如People類型,而forName 是Class類型的一個(gè)靜態(tài)函數(shù),用于獲得一個(gè)類型的Class對(duì)象。
          3. getClass返回的Class對(duì)象,是在運(yùn)行時(shí)確定的,而另外兩個(gè)都是在編譯的時(shí)候確定的。

          假如我們有兩個(gè)類型People和Student,其中student繼承自People。如果執(zhí)行下面的代碼:

          People people = new Student();
          try{
              System.out.println(Class.forName("People") == People.class);
              System.out.println(Class.forName("People") == people.getClass());
               
              System.out.println(people.getClass() == People.class);
               
              System.out.println(Class.forName("People"));//People
              System.out.println(people.getClass());//Student
              System.out.println(People.class);//People
          }catch(Exception e)
          {
              e.printStackTrace();
          }
          Student student = new Student();
          try{
              System.out.println(Class.forName("Student") == Student.class);
              System.out.println(Class.forName("Student") == student.getClass());
               
              System.out.println(student.getClass() == Student.class);
               
              System.out.println(Class.forName("Student"));//Student
              System.out.println(student.getClass());//Student
              System.out.println(Student.class);//Student
          }catch(Exception e)
          {
              e.printStackTrace();
          }



          -----------------------------------------------------
          Silence, the way to avoid many problems;
          Smile, the way to solve many problems;

          posted on 2012-11-23 23:09 Chan Chen 閱讀(798) 評(píng)論(0)  編輯  收藏 所屬分類: Scala / Java

          主站蜘蛛池模板: 庄浪县| 樟树市| 电白县| 香港| 汪清县| 海林市| 冕宁县| 伊金霍洛旗| 枞阳县| 板桥市| 辉南县| 集安市| 肥东县| 乐昌市| 汉源县| 湖北省| 宣化县| 镇安县| 清新县| 怀宁县| 容城县| 内江市| 衡阳市| 二连浩特市| 包头市| 太原市| 嘉黎县| 郴州市| 军事| 益阳市| 科技| 凤台县| 宣汉县| 翼城县| 青州市| 铜梁县| 九寨沟县| 贵南县| 南乐县| 揭东县| 加查县|