Pourquoi les champs statiques ne sont pas initialisées dans le temps?

Le code suivant imprime null une fois.

class MyClass {
   private static MyClass myClass = new MyClass();
   private static final Object obj = new Object();
   public MyClass() {
      System.out.println(obj);
   }
   public static void main(String[] args) {}
}

Pourquoi les objets statiques non initialisées avant l'exécution du constructeur?

Mise à jour

J'avais juste copié ce programme d'exemple et sans attention, je pensais que nous parlions de 2 champs d'Objet, maintenant que j'ai vu que le premier est un MyClass champ.. :/

InformationsquelleAutor Tom Brito | 2010-03-30