private OnClickListener myButton = new OnClickListener(){}; 為何是內部類?
Integer i = new Integer(10); 為何是對象聲明?
new OnClickListener() {
@Override
public void onClick(View v) { /* 實現 */ }
};
OuterClass$1.class,是獨立的 class 文件。final 或效果上 final 的變量。Integer i = new Integer(10); // 或 Integer i = 10; (自動裝箱)
Integer 是 int 的引用類型包裝,繼承 Number,實現 Comparable。value、方法(intValue() 等)。java.lang.Integer 的實例。| 特性 | 匿名內部類 | 包裝類對象 |
|---|---|---|
| 生成類文件 | Outer$1.class 等 | 無新類,用現成 Integer.class |
| 繼承關係 | 實現接口/繼承指定類 | 繼承 Number |
| 外部引用 | 隱式持有(非 static) | 無 |
| 用途 | 事件回調、策略模式等 | 基本類型對象化、集合存儲 |
「new 接口() { } 是內部類,編譯另生 class;
new Integer() 是包裝對象,基本變引用。」
理解兩者本質區別,有助於正確使用匿名內部類處理回調,並合理利用包裝類進行泛型編程。