web-dev-qa-db-fra.com

Objet non initialisé et objet initialisé à NULL

Je travaille en Java.

J'ai l'habitude de configurer certains objets en tant que tels:

public class Foo {
    private SomeObject someName;

    // do stuff

    public void someMethod() {
        if (this.someName != null) {
            // do some stuff
        }
    }
}

La question qui se pose est la suivante: dans cet exemple, someName est-il assimilé à null, puis-je reliably for all objects Supposer que la vérification de la valeur NULL des objets non initialisés sera exacte?

81
SnakeDoc

Correct, les membres statiques et les membres d'instance de type référence non explicitement initialisés sont définis sur null par Java. La même règle s'applique aux membres du groupe.

À partir de spécification de langage Java , section 4.12.5:

Valeurs initiales des variables

Chaque variable d'un programme doit avoir une valeur avant que sa valeur ne soit utilisée:

Chaque variable de classe, variable d'instance ou composant de tableau est initialisé avec une valeur par défaut lors de sa création

[...] Pour tous les types de référence, la valeur par défaut est null.

Notez que la règle ci-dessus exclut les variables locales: elles doivent être initialisées explicitement, sinon le programme ne sera pas compilé.

103
dasblinkenlight

Si une référence Object a été déclarée mais non instanciée, sa valeur est null.

13
Jared Nielsen
namespace Design
     {
              class Program
              {

                static void Main(string[] args)
                {
                  Logger obj1;   // By Default, the value of obj1 is null
                  Logger obj2 = new Logger();  // By Default the value of obj2 is 
                                               // Design.Logger which is not null
                  Console.WriteLine(obj2); 
                  Console.Read();
                }
              }

     class Logger
           {
             public Logger()
              {
                 Console.writeline("Called");
              }   
            }
        }
0