Language Intermédiaire

Définissez des membres statiques dans les classes internes sans avoir besoin de classes statiques imbriquées.

✕ 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();
Un problème avec ce code ? Dites-le nous.
🔓

Plus de flexibilité

Les classes internes peuvent maintenant avoir des membres statiques quand c'est nécessaire.

🧩

État partagé

Suivez l'état partagé entre les instances d'une classe interne.

🎨

Liberté de conception

Pas besoin de promouvoir en classe statique imbriquée juste pour un champ statique.

Ancienne Approche
Classe statique imbriquée requise
Approche Moderne
Membres statiques dans les classes internes
Depuis JDK
16
Difficulté
Intermédiaire
Membres statiques dans les classes internes
Disponible

Disponible depuis JDK 16 (mars 2021)

Avant Java 16, seules les classes statiques imbriquées pouvaient contenir des membres statiques. Les classes internes (non statiques) ne pouvaient pas avoir de statiques car elles nécessitaient une instance englobante. Java 16 assouplit cette restriction, permettant des champs statiques, méthodes et même des types imbriqués dans les classes internes.

Partager 𝕏 🦋 in