Language Intermedio

Define miembros estáticos en clases internas sin necesidad de clases estáticas anidadas.

✕ 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();
¿Ves un problema con este código? Cuéntanos.
🔓

Más flexibilidad

Las clases internas ahora pueden tener miembros estáticos cuando sea necesario.

🧩

Estado compartido

Rastrea estado compartido entre instancias de una clase interna.

��

Libertad de diseño

No es necesario promover a clase estática anidada solo por un campo estático.

Enfoque Antiguo
Se requiere clase estática anidada
Enfoque Moderno
Miembros estáticos en clases internas
Desde JDK
16
Dificultad
Intermedio
Miembros estáticos en clases internas
Disponible

Ampliamente disponible desde JDK 16 (marzo 2021)

Antes de Java 16, solo las clases estáticas anidadas podían contener miembros estáticos. Las clases internas (no estáticas) no podían tener estáticos porque requerían una instancia envolvente. Java 16 relaja esta restricción, permitiendo campos estáticos, métodos e incluso tipos anidados en clases internas.

Compartir 𝕏 🦋 in