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

Android setListAdapter 兩種寫法等價性分析:匿名對象 vs 變量引用

     編輯:程式設計綜合問答

在學習 ListActivity 的 setListAdapter() 時,常見兩種寫法。本文驗證其等價性,並指出語法陷阱。

代碼對比

寫法 1:變量引用

ArrayAdapter<String> adapter = new ArrayAdapter<>(
    this, R.layout.layout_nm, R.id.layout_idnm, items
);
setListAdapter(adapter);

寫法 2:匿名對象(含語法錯誤)

setListAdapter(new ArrayAdapter<String>(
    this, R.layout.layout_nm, R.id.layout_idnm, items
);); // ← 多餘的分號導致編譯錯誤

結論

  1. 語義完全等價:修正語法錯誤後(移除多餘 `;`),兩者生成的字節碼一致,運行行為無差異。
  2. 寫法 2 更簡潔:避免創建局部變量,適合「創建即設置、無需後續引用」場景。
  3. 寫法 1 利於調試:可在斷點檢查 adapter 狀態,適合複雜邏輯。

最佳實踐建議

  • 簡單場景優先用匿名對象(寫法 2 修正版)。
  • 需動態修改 Adapter(如 notifyDataSetChanged()、過濾)時,保留變量引用(寫法 1)。
  • 注意泛型類型推斷,Java 7+ 可省略構造器後的 ``。

理解等價性本質,根據業務場景靈活選擇,寫出更優雅的代碼。

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