類名.this與類名.class

來源:互聯網
上載者:User

原文連結:http://leiming32.blog.51cto.com/1021363/494913

1、當在內部類中使用this指的就是內部類的對象, 為了訪問外層類對象,就可以使用外層類名.this來訪問。
2、在java中,每個class都有一個相應的Class對象,當編寫好一個類,編譯完成後,在產生的.class檔案中,就產生一        個Class對象,用來表示這個類的類型資訊。獲得Class執行個體的三種方式:
      1). 利用對象調用getClass()方法擷取該對象的Class執行個體
      2). 使用Class的靜態方法forName(),用類的名字擷取一個Class執行個體
      3). 運用.calss的方式擷取Class執行個體,對基礎資料型別 (Elementary Data Type)的封裝類,還可以採用.TYPE來擷取對應的基礎資料型別 (Elementary Data Type)的Class執行個體。
以下是TestClass.java代碼:

public class TestClass {     public static void main(String[] args) {         // 在運行期間,如果我們要產生某個類的對象,java虛擬機器會檢測該類型的Class對象是否已被載入。    // 如果沒有載入,java虛擬機器會根據類的名稱找到.class檔案並載入它。         // 當new Point()的時候載入這個類,用forName構造執行個體的時候也載入該類。 只載入一次         System.out.println("before new Point()");         new Point();         System.out.println("after new Point()");         try {             Class.forName("Line");         } catch (Exception e) {             e.printStackTrace();         }          // 利用對象調用getClass()方法擷取該對象的Class執行個體         Point pt = new Point();         Class c1 = pt.getClass();         System.out.println(c1.getName()); // 結果:Point          // 使用Class的靜態方法forName(),用類的名字擷取一個Class執行個體         try {             Class c2 = Class.forName("Point");             System.out.println(c2.getName()); // 結果:Point             Point pp = (Point) c2.newInstance(); //一旦某個類型的Class對象已經被載入到記憶體,就可以用它來產生該類型的所有對象。                                         //newInstance()調用類中預設的構造方法。             pp.output();         } catch (Exception e) {             e.printStackTrace();         }          // 運用.class的方式擷取Class執行個體(類)         Class c3 = Point.class;         System.out.println(c3.getName()); // 結果:Point          // 運用.calss的方式擷取Class執行個體(基本類型)         Class c4 = int.class;         System.out.println(c4.getName()); // 結果:int          // 運用.class的方式擷取Class執行個體(基礎資料型別 (Elementary Data Type)的封裝類)         Class c5 = Integer.TYPE;         System.out.println(c5.getName()); // 結果:int         Class c6 = Integer.class;         System.out.println(c6.getName()); // 結果:java.lang.Integer     } }  class Point {     static {         System.out.println("loading point");     }      void output() {         System.out.println("x=" + x + ",y=" + y);     }     int x, y; }  class Line {     static {         System.out.println("loading Line");     } }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.