public class AdapterWrapper implements ListAdapter {
ListAdapter delegate = null; // 接口引用賦值 null
// ...
}
接口引用可以賦值為 null,這是 Java 引用類型的基本特性,與類引用無異。
ListAdapter delegate:聲明一個類型為 ListAdapter 的引用變量= null:初始狀態不指向任何對象
delegate = new SimpleCursorAdapter(...); // 實現類 1
delegate = new ArrayAdapter<>(...); // 實現類 2
delegate = new WrapperListAdapter(delegate); // 裝飾器模式
delegate = customAdapter; // 自定義實現
| 模式 | 接口引用作用 | null 初始化意義 |
|---|---|---|
| 策略模式 | 持有策略接口,運行時切換算法 | 默認無策略,需顯式設置 |
| 裝飾器模式 | 包裝同接口對象,增強功能 | 可選包裝對象 |
| 代理模式 | 控制對真實對象的訪問 | 延遲初始化真實對象 |
| 回調/監聽器 | 定義回調契約 | 無監聽器時為 null,調用前判空 |
// 調用前必須判空
if (delegate != null) {
delegate.getView(position, convertView, parent);
}
// 或使用 Optional (Java 8+)
Optional.ofNullable(delegate).ifPresent(d -> d.getView(...));
// Kotlin 安全調用
delegate?.getView(position, convertView, parent)
implements ListAdapter 的類實例化後才能賦值 → 引用變量聲明時即可賦值 nullif (delegate != null) 或 ?.