Language 中级

在内部类中定义静态成员,无需使用静态嵌套类。

✕ Java 8
class Library {
    // Must be static nested class
    static class Book {
        static int globalBookCount;

        Book() {
            globalBookCount++;
        }
    }
}

// Usage
var book = new Library.Book();
✓ Java 16+
class Library {
    // Can be inner class with statics
    class Book {
        static int globalBookCount;

        Book() {
            Book.globalBookCount++;
        }
    }
}

// Usage
var lib = new Library();
var book = lib.new Book();
发现此代码有问题? 告诉我们。
🔓

更大灵活性

内部类现在可以在需要时拥有静态成员。

🧩

共享状态

跨内部类实例追踪共享状态。

📐

设计自由

无需仅为一个静态字段而将类提升为静态嵌套类。

旧方式
必须使用静态嵌套类
现代方式
内部类中的静态成员
自 JDK
16
难度
中级
内部类中的静态成员
可用

自 JDK 16 起广泛可用(2021 年 3 月)

Java 16 之前,只有静态嵌套类才能包含静态成员。Java 16 解除了这一限制,允许内部类声明静态字段和方法。

分享 𝕏 🦋 in