interface Inter {
public abstract void show();
}
class Outer {
public void method() {
new Inter() { // 這裡 new 接口名?
public void show() {
System.out.println("show");
}
};
}
}
這不是實例化接口(接口無法實例化),而是定義並實例化一個實現該接口的匿名內部類。
new InterfaceName() {
// 類體:實現接口所有抽象方法
// 可訪問外部類 final/有效final 變量
};
編譯器會生成一個隱式類(如 Outer$1.class),實現 Inter 接口,並在構造函數中捕獲外部上下文引用。
// 函數式接口(單一抽象方法)可簡寫為
Runnable r = () -> System.out.println("show");
// 等價於
new Runnable() { public void run() { System.out.println("show"); } }
{ ... }。