Usi la parola chiave statica per dichiarare un modello a istanza singola? [duplicare]

1

Ho appena trovato questo codice e ho trovato interessante sapere se lo consideri come un altro pattern a istanza singola?

public class Initiator
{
   private static String str;

   // there is many more private field here...

   private static String getMethod() { ... }

   // there is many more private getter here...

   static
   {
       // initialize all field here...
   }
}

Il programmatore afferma che così facendo posso assicurarmi che ci sia sempre un'istanza nella memoria. Si noti che non vi è alcun metodo setter nel codice mentre il programmatore ha eseguito il lavoro di inizializzazione nel blocco di codice statico. E non ho mai notato che il blocco di codice statico può essere utilizzato in questo modo.

    
posta huahsin68 15.09.2014 - 10:49
fonte

1 risposta

1

È un utilizzo valido, tendo ad usare il blocco statico quando l'inizializzazione può generare eccezioni controllate:

private static final Cipher cipher;
static{
    try{
        cipher = Cipher.getInstance("AES");
        //initialization which may throw
    }catch(Exception e){
    throw new RuntimeException(e);//rethrow as unchecked if it fails -> will stop the program with visible stacktrace
    }
}
    
risposta data 15.09.2014 - 11:01
fonte

Leggi altre domande sui tag