
Originariamente inviata da
andbin
No.
Una classe "static" (ripeto: deve essere "membro" di un'altra classe) PUO' essere istanziata.
Una nested static class ha gli stessi identici principi (stesse regole, stesso ciclo di vita, ecc...) di una classe "top-level" (non contenuta dentro qualcosa). È semplicemente da vedere come se fosse in un "namespace" che è fatto dalla classe top-level che la contiene.
codice:
public class TopLevel {
// ....
public static class Nested {
// ....
}
}
Per poterla istanziare dall'esterno devi fare:
new TopLevel.Nested()
Tutto qui. Per il resto cambia nulla come regole e concetti.
P.S. deduco che hai le idee un po' confuse su questo argomento.

Probabilmente sono tardo
, ma ancora non ci arrivo...
Mettiamo che debba implementare, per esempio, una classe/libreria per avere una serie di metodi di utilità per la cifratura di stringhe:
-con classe statica:
codice:
public static class HashUtils{
public static String getMd5(String pwd) {
//Restituisce la stringa cifrata in md5;
}
}
--> Utilizzo:
codice:
String ciphredPwd = HashUtils.getMd5(pwd);
-con Singleton:
codice:
public class HashUtils {
private static HashUtils instance = null;
private/protected HashUtils() {}
public static HashUtils getInstance() {
if(instance == null) {
instance = new HashUtils();
}
return instance;
}
public String getMd5(String pwd) {
//Restituisce la stringa cifrata in md5;
}
}
--> Utilizzo:
codice:
String ciphredPwd = HashUtils.getInstance().getMd5(pwd);
L'unica differenza è che con il singleton avrei l'inizializzazione "pigra"...