web-dev-qa-db-fra.com

initialisation de variable statique java

comment initialiser un membre statique privé d'une classe en Java.

essayer ce qui suit:

public class A {
   private static B b = null;
   public A() {
       if (b == null)
         b = new B();
   }

   void f1() {
         b.func();
   }
}

mais en créant un deuxième objet de la classe A puis en appelant f1 (), j'obtiens une exception de pointeur nul.

41
Rohit Banga

Les moyens préférés pour initialiser les membres statiques sont soit (comme mentionné précédemment)

private static final B a = new B(); // consider making it final too

ou pour un code d'initialisation plus complexe, vous pouvez utiliser un bloc d'initialisation statique:

private static final B a;

static {
  a = new B();
}
78
sfussenegger

Votre code devrait fonctionner. Êtes-vous sûr de publier votre code exact?


Vous pouvez également l'initialiser plus directement:

    public class A {

      private static B b = new B();

      A() {
      }

      void f1() {
        b.func();
      }
    }
5
KLE