
Envoyé par
Furi0u5
Avec un objet en paramètre d'un constructeur il faut toujours vérifier s'il n'est pas null.
Pas forcément, ton constructeur peut très bien accepter des paramètres null, ça dépend de la façon dont tu l'as codé...

Envoyé par
Furi0u5
Mais lorsque je teste mon constructeur, je suis obligé d'initialiser mon objet à null
Absolument pas. C'est même complètement inutile la plupart du temps.
Si tu effectues :
Object o = new ...; // appel d'un constructeur
alors tu seras sûr que o ne seras pas null (soit le constructeur a échoué et a levé une exception, et donc tu n'atteindras pas l'instruction suivante, soit il a réussi à créer un nouvel objet, et donc o est non null et tu peux tranquillement continuer ton traitement sur o).

Envoyé par
Furi0u5
1 2 3 4
| Objet o = null;
if (o!=null) {
...
} |
1 2 3 4
| Objet o;
if (o!=null) {
...
} |
Ces deux codes sont équivalents, et dans les deux cas le test est complètement inutile : tu viens juste de mettre o à null, comment espères-tu obtenir autre chose que false en testant (o != null) ?

Envoyé par
Furi0u5
Sauf que voilà... c'est bien beau de mettre un objet à null mais j'aimerais savoir quand (dans un programme qui n'est pas un test) mon constructeur risque de tomber sur un objet null ?
Eh bien il faut tester la valeur du paramètre à l'intérieur du constructeur...

Envoyé par
Furi0u5
Comment se met-t-il à null si l'on ne le met pas manuellement ?
Je ne comprends pas de quoi tu parles 
Soit tu as passé un objet null en paramètre à ton constructeur, soit tu lui as passé un objet correctement initialisé, et dans les deux cas le constructeur utiliseras ce que tu lui as donné en entrée (avec éventuellement levée d'une NullPointerException s'il n'était pas prévu qu'un paramètre puisse être null)... que veux-tu dire par "il se met à null" ???
Partager