new Thread(new Runnable() {
@Override public void run() { ... }
}).start();
`Runnable` 是介面,為何可以 `new Runnable()`?
// 編譯器生成的隱含類別
class OuterClass$1 implements Runnable {
final OuterClass this$0;
OuterClass$1(OuterClass outer) { this$0 = outer; }
@Override public void run() { /* 方法體 */ }
}
// 使用時
new Thread(new OuterClass$1(this)).start();
理解「介面類型變量指向實現類實例」的多態本質,`new Interface() { ... }` 就不再神秘。