this 綁定)。內部類定義處於外部類「非頂層」,Java 語法禁止非頂層類擁有 static 字段/方法/內部類。static 內部類本身是靜態成員,但其內部不能再定義靜態成員。
public class Parcel10 {
private static class PContents extends Contents { ... }
protected static class PDestination implements Destination { ... }
public static Destination dest(String s) { return new PDestination(s); }
public static Contents cont() { return new PContents(); }
// main 中無需 Parcel10 實例直接調用靜態工廠方法
}
interface IInterface {
static class Inner { int i, j, k; void f() {} } // 僅佔用接口命名空間
}
不違反「接口無實現」規則,因類是靜態的,不依賴接口實例。
class TestBed {
void f() { println("f()"); }
public static class Tester {
public static void main(String[] args) {
new TestBed().f();
}
}
}
// 運行:java TestBed$Tester
// 發布時可刪除 TestBed$Tester.class
優點:測試代碼與產品代碼同文件、同類加載上下文,發布時物理刪除 class 文件即可剝離,零侵入。