Membres statiques dans les classes internes
Définissez des membres statiques dans les classes internes sans avoir besoin de classes statiques imbriquées.
Comparaison de Code
✕ 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.
Pourquoi la méthode moderne gagne
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
Support JDK
Membres statiques dans les classes internes
Disponible
Disponible depuis JDK 16 (mars 2021)
Comment ça fonctionne
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.
Documentation Associée