程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 引用外部類對象

引用外部類對象

編輯:關於JAVA

若想生成外部類對象的句柄,就要用一個點號以及一個this來命名外部類。舉個例子來說,在Sequence.SSelector類中,它的所有方法都能產生外部類Sequence的存儲句柄,方法是采用Sequence.this的形式。結果獲得的句柄會自動具備正確的類型(這會在編譯期間檢查並核實,所以不會出現運行期的開銷)。
有些時候,我們想告訴其他某些對象創建它某個內部類的一個對象。為達到這個目的,必須在new表達式中提供指向其他外部類對象的一個句柄,就象下面這樣:
 

//: Parcel11.java
// Creating inner classes
package c07.parcel11;

public class Parcel11 {
  class Contents {
    private int i = 11;
    public int value() { return i; }
  }
  class Destination {
    private String label;
    Destination(String whereTo) {
      label = whereTo;
    }
    String readLabel() { return label; }
  }
  public static void main(String[] args) {
    Parcel11 p = new Parcel11();
    // Must use instance of outer class
    // to create an instances of the inner class:
    Parcel11.Contents c = p.new Contents();
    Parcel11.Destination d =
      p.new Destination("Tanzania");
  }
} ///:~

為直接創建內部類的一個對象,不能象大家或許猜想的那樣——采用相同的形式,並引用外部類名Parcel11。此時,必須利用外部類的一個對象生成內部類的一個對象:
Parcel11.Contents c = p.new Contents();
因此,除非已擁有外部類的一個對象,否則不可能創建內部類的一個對象。這是由於內部類的對象已同創建它的外部類的對象“默默”地連接到一起。然而,如果生成一個static內部類,就不需要指向外部類對象的一個句柄。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved