Il blocco static

La keyword static in java viene usata per definire una proprietà di oggetti e metodi che sono condivisi da più istanze di una stessa classe. Ciò significa che questo tipo di proprietà non è riferita ad una istanza della classe, ma bensi alla classe stessa. Infatti una modifica ad una variabile statica riflette su tutte le istanze di quella classe. Diversi sono i modi per inizializzare un oggetto o variabile statica, tra cui quello diretto:
public static Integer valore = 10;
Questo metodo funziona bene quando il valore di inizializzazione è già disponibile e possono essere messi su un'unica riga. Tuttavia, questa forma di inizializzazione ha delle limitazioni poichè se l'inizializzazione richiede una certa logica (per esempio, un ciclo for per riempire una matrice complessa), una semplice assegnazione è inadeguata allo scopo, almeno che non la si inserisce all'interno di in un metodo statico.

Il linguaggio java ci mette a disposizione il blocco static che è un normale blocco di codice {, }, preceduto dalla keyword static e che può essere inserito al di fuori del corpo di un metodo naturalmente all'interno della classe:
class Example {
...
  static {
    //codice
  }
...
}
All'interno di questo blocco è possibile utilizzare solo ed esclusivamente membri o metodi statici. Una classe puņ avere un numero qualsiasi di blocchi di inizializzazione statica, e possono comparire in qualsiasi parte del corpo della classe. L'esecuzione dei blocchi avviene nell'ordine in cui appaiono nel codice sorgente.

Vediamo un esempio, immaginiamo di avere una classe che contiene un'array di interi accessibile staticamente, e dobbiamo inizializzarlo con dei valori casuali. In questo caso possiamo utilizzare il blocco static dove inseriamo all'interno un ciclo for che inserisce i valori:
class Example {
   private static int [] vettore = new int[10];

   static {
     for(int i=0;i<vettore.length;i++){
       int n = (int)(Math.random()*100)
       vettore[i] = n;
     }
   }

   public static int getValue(int index) {
     return vettore[index];
   }

}
I dati vengono caricati direttamente al primo utilizzo della classe cioè in questo caso quando chiamiamo il metodo Example.getValue().
Altri link che potrebbero interessarti
  • » Utilizzare un JButton in Java Swing
  • » Utilizzare HTML in componenti Java Swing
  • » Numeri casuali in java
  • » Modalità Full Screen Exclusive in java
  • » Leggere un file di testo in java
  • » Le variabili atomiche in java
  • » Le classi anonime
  • » Java Regex
  • » Java Database MySql
  • » Java Cursor Mouse
  • » Import Static Java
  • » Implementare un Singleton
  • » Implementare un KeyListener in java Swing
  • » Implementare il System.out su una JTextArea
  • » Il costrutto if in java
  • » Il costrutto foreach in java
  • » Creare una ToolBar in Java Swing
  • » Chiudere le applicazioni Java Swing
  • » Bordo con titolo in Java Swing
  • » Background Image per componenti Java Swing