首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 內部類訪問外部類引用:OuterClass.this 與創建內部類實例的正確語法

     編輯:Java 相關知識

獲取外部類引用:OuterClass.this

內部類方法中,OuterClass.this 即為創建該內部類實例的外部類對象引用。編譯期類型檢查,運行期零開銷。

class Sequence {
    private Object[] o;
    private class SSelector implements Selector {
        public Object current() { return o[i]; } // 直接訪問外部 private 字段
        // 等價於 Sequence.this.o[i]
    }
}

創建內部類實例:outerInstance.new InnerClass()

非靜態內部類實例不能直接 new Outer.Inner(),必須憑藉外部實例:

Parcel11 p = new Parcel11();
Parcel11.Contents c = p.new Contents();        // 正確
Parcel11.Destination d = p.new Destination("Tanzania"); // 正確
// Parcel11.Contents c2 = new Parcel11.Contents(); // 編譯錯誤

本質原因

內部類實例構造時,編譯器隱式傳入 this(外部引用)作為構造器隱藏參數。無外部實例,無法完成綁定。

靜態內部類例外

static 內部類不綁定外部實例,可直接 new Outer.StaticInner()。詳見下一節。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved