OVH Cloud OVH Cloud

Comment un constructeur peut-il retourner null ?

3 réponses
Avatar
ThierryP
Comment faire pour que le constructeur d'une classe décide de ne pas créer
l'objet et que new retourne finalement "null" ?
Cela est fréquent que les conditions d'initialisation vraisemblable d'un
objet ne soient pas remplies, je souhaite alors que l'objet ne soit pas crée.
Par exemple un objet ne doit pouvoir se créer que si la valeur
d'initialisation de son champs A est supérieure à celle de son champs B :

public class maClass
{ private int A;
private int B;
public maClass(int a, int b)
{ if(a>b) {A=a; B=b;}
else // l'objet ne doit pas se créer
}
}

APPEL :
maClass obj = new maClass(10,100); // je souhaite que obj soit = à null

J'ai essayé avec dispose() mais j'ai du mal... d'autant que ma classe hérite
d'une autre. Merci de m'indiquer si possible le code pour l'exemple cité plus
haut.

--
Thierry PAUL

3 réponses

Avatar
cyrille
In article , "=?Utf-8 ?B?
VGhpZXJyeVA=?=" <thierry_paul(a_virer)@tele2.fr> says...
Comment faire pour que le constructeur d'une classe décide de ne pas créer
l'objet et que new retourne finalement "null" ?
Cela est fréquent que les conditions d'initialisation vraisemblable d'un
objet ne soient pas remplies, je souhaite alors que l'objet ne soit pas c rée.
Par exemple un objet ne doit pouvoir se créer que si la valeur
d'initialisation de son champs A est supérieure à celle de son champs B :



Ce n'est pas possible.

Tu peux lever une exception dans le constructeur,
ou bien faire une méthode init() qui devra être appelée après l'ins tanciation
de ta classe.

cyrille
Avatar
Ambassadeur Kosh
> Comment faire pour que le constructeur d'une classe décide de ne pas créer
l'objet et que new retourne finalement "null" ?
Cela est fréquent que les conditions d'initialisation vraisemblable d'un
objet ne soient pas remplies, je souhaite alors que l'objet ne soit pas


crée.
Par exemple un objet ne doit pouvoir se créer que si la valeur
d'initialisation de son champs A est supérieure à celle de son champs B :



ça n'a pas de sens de resoudre ça comme ça.
si les conditions ne sont pas remplies, lance une exception.
c'est à ranger dans le meme tiroir que renvoyer un booleen qui dit si
l'execution d'une fonction s'est bien passée ou pas...

try
{
Dummy dummy = new Dummy(25,63) ;
// hop, ça crash, et si ça a crashé, l'objet dummy sera hors de portée
// semantiquement, c'est le plus juste
}
catch(ArgumentException exception)
{

}
Avatar
Mitsuru FURUTA [Ms]
Bonjour,

Une solution couramment employée est de passer par une méthode statique de
la classe qui renvoie (ou pas) une instance selon les conditions. Exemple:
File f = File.Create();

Bonne continuation,

Mitsuru FURUTA [Microsoft FRANCE]

"ThierryP" <thierry_paul(a_virer)@tele2.fr> wrote in message
news:
Comment faire pour que le constructeur d'une classe décide de ne pas créer
l'objet et que new retourne finalement "null" ?
Cela est fréquent que les conditions d'initialisation vraisemblable d'un
objet ne soient pas remplies, je souhaite alors que l'objet ne soit pas


crée.
Par exemple un objet ne doit pouvoir se créer que si la valeur
d'initialisation de son champs A est supérieure à celle de son champs B :

public class maClass
{ private int A;
private int B;
public maClass(int a, int b)
{ if(a>b) {A=a; B=b;}
else // l'objet ne doit pas se créer
}
}

APPEL :
maClass obj = new maClass(10,100); // je souhaite que obj soit = à null

J'ai essayé avec dispose() mais j'ai du mal... d'autant que ma classe


hérite
d'une autre. Merci de m'indiquer si possible le code pour l'exemple cité


plus
haut.

--
Thierry PAUL