首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 內部類 `OuterClass.this` 語法詳解:存取外部類實例成員

     編輯:程式設計綜合問答

語法含義


public class Outer {
    private int x = 10;
    class Inner {
        private int x = 20;
        void print() {
            System.out.println("Inner x: " + x);           // 20
            System.out.println("Outer x: " + Outer.this.x); // 10
        }
    }
}

核心規則

  • OuterClass.this 代表外部類的當前實例(非 Class 物件)。
  • 僅能在非靜態內部類(內部類、匿名類、區域類)中使用。
  • 用於區分同名成員:Outer.this.field、Outer.this.method()、Outer.this 傳遞外部實例引用。

Android 常見場景


public class MainActivity extends Activity {
    void startService() {
        Intent intent = new Intent(MainActivity.this, MyService.class);
        // MainActivity.this 是 Context 實例
        startService(intent);
    }
    
    Button btn = findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override public void onClick(View v) {
            Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
            // 匿名內部類需用 MainActivity.this 取得 Context
        }
    });
}

對比:`this` vs `Outer.this`

語法代表可用範圍
this當前類實例(內部類自身)任何非靜態方法
Outer.this外部類實例非靜態內部類
Outer.class外部類 Class 物件任何地方

原答案核心

「明白了,你有一個內部類... B.this.x 內部類的 A.this.x 外部類的」

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