Language Intermedio

Definisci membri statici nelle classi interne senza richiedere classi nested statiche.

✕ 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();
Vedi un problema con questo codice? Faccelo sapere.
🔓

Più flessibilità

Le classi interne ora possono avere membri statici quando necessario.

🧩

Stato condiviso

Traccia lo stato condiviso tra le istanze di una classe interna.

📐

Libertà di design

Non è necessario promuovere a classe nested statica solo per un campo statico.

Approccio Vecchio
Necessaria la classe nested statica
Approccio Moderno
Membri statici nelle classi interne
Dal JDK
16
Difficoltà
Intermedio
Membri statici nelle classi interne
Disponibile

Ampiamente disponibile dal JDK 16 (marzo 2021)

Prima di Java 16, solo le classi nested statiche potevano contenere membri statici. Le classi interne (non statiche) non potevano avere statici perché richiedevano un'istanza di enclosing. Java 16 allenta questa restrizione, permettendo campi statici, metodi e anche tipi nested nelle classi interne.

Condividi 𝕏 🦋 in