Visualizzazione dei risultati da 1 a 6 su 6

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Mrk31 Visualizza il messaggio
    Cosa significa e come si utilizza: static { ?
    È uno static initialization block (o detto anche static init block). È un blocco di codice che viene eseguito mentre la JVM sta eseguendo la inizializzazione della classe e in particolare mentre sta eseguendo la inizializzazione dei campi static.
    Pertanto viene eseguito 1 volta sola. NON ad ogni creazione di una istanza della classe.

    Si contrappone agli instance initialization block che è sempre un blocco { } allo stesso livello dei metodi ma senza lo static e che viene eseguito mentre l'oggetto viene inizializzato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    76
    Quote Originariamente inviata da andbin Visualizza il messaggio
    È uno static initialization block (o detto anche static init block). È un blocco di codice che viene eseguito mentre la JVM sta eseguendo la inizializzazione della classe e in particolare mentre sta eseguendo la inizializzazione dei campi static.
    Pertanto viene eseguito 1 volta sola. NON ad ogni creazione di una istanza della classe.

    Si contrappone agli instance initialization block che è sempre un blocco { } allo stesso livello dei metodi ma senza lo static e che viene eseguito mentre l'oggetto viene inizializzato.
    Ok grazie mille...

    qundi l'associazione del blocco alla variabile è posizionale???

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Mrk31 Visualizza il messaggio
    qundi l'associazione del blocco alla variabile è posizionale???
    Se uno static init block deve inizializzare una variabile "di classe" (static), la variabile deve essere dichiarata prima del blocco. (in realtà , non è sempre così, ci sono altre regole che non ti ho detto).
    EDIT: mi pareva di ricordare così ... ma una prova veloce con JDK 7 mi ha confuso un attimo. Dovrei andare a rivedere le regole e provare con JDK vecchi. Comunque queste sono davvero super-finezze.

    Comunque prova:

    codice:
    public class Prova {
        static {
            System.out.println("static init block");
        }
    
        {
            System.out.println("instance init block");
        }
    
        public Prova() {
            System.out.println("costruttore");
        }
    
        public static void main(String[] args) {
            System.out.println("----main----");
            new Prova();
            new Prova();
        }
    }

    Nota come lo static init block viene addirittura eseguito PRIMA che il main venga invocato!!
    Ultima modifica di andbin; 26-04-2016 a 12:51
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.