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

Java 監聽器參數看似無對象實則匿名內部類實例

     編輯:程式設計疑難解答

代碼片段

b.setOnClickListener(new OnClickListener() {  // 此處有語法錯誤:多一個點
    // 方法體
});

專家解析

  1. setOnClickListener 需要一個 OnClickListener 類型參數
  2. new OnClickListener() { ... } 創建了實現該接口的匿名內部類實例
  3. 這個實例就是傳遞的對象,雖然沒有顯式變量名
  4. 代碼中 Listener. 多了一個點,應刪除

等價顯式寫法

OnClickListener listener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        // 實現邏輯
    }
};
b.setOnClickListener(listener);

Java 8+ Lambda 簡寫

b.setOnClickListener(v -> {
    // 邏輯
});

核心概念

匿名內部類 = 隱式實例化對象。接口回調模式本質是「傳遞行為對象」。

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