View Single Post
Old 15-08-2008, 16:27   #7
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12822
Semplicemente quando non hai bisogno che un determinato metodo debba essere eseguito su un oggetto in particolare. Ti faccio un esempio:

Mettiamo che tu voglia creare una classe Amministratore, e per diversi motivi vuoi che si debba creare una sola istanza di Amministratore (cioè un solo amministratore).
Come fai?

Codice:
public class Amministratore {
   private static Amministratore admin;

   private String nome;

   private Amministratore(String nome) {
          this.nome = nome;
   }

   public static Amministratore creaAmministratore(String nome) {
          if (admin!=null) {
                System.out.println("Attenzione amministratore già creato!");
                return admin;
           }
          System.out.println("Creo un nuovo amministratore col nome: "+nome);
          admin = new Amministratore(nome);
          return admin;
   }

   public String getNome() {
          return nome;
   }
   ...
}
In sostanza puoi notare che gli attributi static e i metodi static vengono creati PRIMA che venga creato ogni oggetto della classe Amministratore.

Notare anche che il costruttore è privato quindi non puoi creare direttamente oggetti col classico new Amministratore(nome) ma devi invocare il metodo STATICO creaAmministratore(String nome).

Se chiamo Amministratore amm = Amministratore.creaAmministratore("Io") ->

La prima volta l'output sarà:

Codice:
Creo un nuovo amministratore col nome: Io
Se lo chiami un'altra volta l'output sarà:
Codice:
Attenzione amministratore già creato!
E ti verrà restituito l'amministratore corrente.

Variabili e metodi Static esistono prima di ogni istanza dell'oggetto.

Ultima modifica di WarDuck : 15-08-2008 alle 18:07.
WarDuck è offline   Rispondi citando il messaggio o parte di esso