Statische Mitglieder in inneren Klassen
Statische Mitglieder in inneren Klassen definieren, ohne statisch verschachtelte Klassen verwenden zu müssen.
Code-Vergleich
✕ 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();
Problem mit diesem Code entdeckt? Sag uns Bescheid.
Warum der moderne Weg gewinnt
Mehr Flexibilität
Innere Klassen können bei Bedarf nun statische Mitglieder haben.
Gemeinsamer Zustand
Gemeinsamen Zustand über Instanzen einer inneren Klasse hinweg verfolgen.
Designfreiheit
Kein Hochstufen zu einer statisch verschachtelten Klasse nur wegen eines statischen Felds.
Alter Ansatz
Statisch verschachtelte Klasse erforderlich
Moderner Ansatz
Statische Mitglieder in inneren Klassen
Seit JDK
16
Schwierigkeitsgrad
Fortgeschritten
JDK-Unterstützung
Statische Mitglieder in inneren Klassen
Verfügbar
Seit JDK 16 allgemein verfügbar (März 2021)
Wie es funktioniert
Vor Java 16 konnten nur statisch verschachtelte Klassen statische Mitglieder enthalten. Innere (nicht-statische) Klassen durften keine Statics haben, weil sie eine umschließende Instanz erforderten. Java 16 lockert diese Einschränkung und erlaubt statische Felder, Methoden und sogar verschachtelte Typen in inneren Klassen.
Zugehörige Dokumentation