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

Java this 關鍵字詳解:指向當前對象實例的引用

     編輯:程式設計疑難解答

代碼場景

public abstract class BaseActivity extends FragmentActivity implements UiOperation {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // ...
        Utils.findButtonSetOnClickListener(rootView, **this**); // 此處 this 是什麼?
    }
}
interface UiOperation extends View.OnClickListener {}
class Utils {
    static void findButtonSetOnClickListener(View view, View.OnClickListener listener) { ... }
}

答案

this 代表 **當前 `BaseActivity` 子類實例的引用**(即 `this` 指向調用 `onCreate` 的那個 Activity 對象)。

原理

  • Java 非靜態方法隱含參數 `this`,指向調用該方法的對象。
  • `BaseActivity` 實現了 `UiOperation` → `OnClickListener`,所以 `this` 類型兼容 `OnClickListener`。
  • 工具類靜態方法接收 `listener` 參數,內部對按鈕調用 `btn.setOnClickListener(listener)`,點擊時回調到 Activity 的 `onClick`。

常見用法

注意

  • 靜態方法/靜態代碼塊中**不能使用 `this`**(無實例上下文)。
  • 內部類中 `this` 指向內部類實例,外部類實例用 `OuterClass.this`。

總結

`this` 就是「我自己」——當前正在執行代碼所屬的對象實例引用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景示例含義
區分同名字段`this.name = name;`左邊是實例字段,右邊是參數
構造函數鏈調用`this(name, age);`調用本類另一構造器
傳遞當前對象`other.doSomething(this);`作為參數傳給他方
返回當前對象`return this;`鏈式調用/Builder 模式