java 內部類使用 .this 和 .new


如果需要生成對外部類對象的引用,可以使用外部類的名字后面緊跟圓點和this,這樣產生的引用自動地具有正確的類型,這一點在編譯器就被知曉並受到檢查,因此並沒有運行時開銷

//: innerclasses/DotThis.java
// Qualifying access to the outer-class object.
package object;
public class DotThis {
  void f() { System.out.println("DotThis.f()"); }
  public class Inner {
    public DotThis outer() {
      return DotThis.this; //這里生成了類DotThis的引用(inference)
      // A plain "this" would be Inner's "this"
    }
  }
  public Inner inner() { return new Inner(); }
  public static void main(String[] args) {
    DotThis dt = new DotThis();
    DotThis.Inner dti = dt.inner();
    dti.outer().f();//這里用類DotThis的引用(inference) 創建類DotThis的對象
  }
} /* Output:
DotThis.f()
*///:~

要去創建某個內部類的對象,必須字new表達式中提供其他外部類對象的引用,這就需要.new語法,必須使用外部類的對象來創建內部類

//: innerclasses/DotNew.java
// Creating an inner class directly using the .new syntax.
package object;
public class DotNew {
  public class Inner {}
  public static void main(String[] args) {
    DotNew dn = new DotNew(); 
    DotNew.Inner dni = dn.new Inner(); //這里利用DotNEW的對象生成內部類Inner的對象
    //! DotNew.Inner dni = DotNew.new Inner(); //這樣不允許(allow)
  }
} ///:~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM