Language Fortgeschritten

Statische Mitglieder in inneren Klassen definieren, ohne statisch verschachtelte Klassen verwenden zu müssen.

✕ 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.
🔓

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
Statische Mitglieder in inneren Klassen
Verfügbar

Seit JDK 16 allgemein verfügbar (März 2021)

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.

Teilen 𝕏 🦋 in