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?
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é.
Si une référence Object
a été déclarée mais non instanciée, sa valeur est null
.
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");
}
}
}