Salut a tous!
Les 2 premieres questions que j'ai envoyé sur ce newsgroup n'ont jamais eu
de réponse. J'espère être plus chanceux cette fois ci...
J'ai une classe qui contient une méthode moult fois surchargée:
Classe1 {
void methode1(Objet o) {...}
void methode1(Integer o) {...}
void methode1(String o) {...}
void methode1(AutreObjet o) {...}
}
Cette classe permet de gérer le comportement de l'appli en fonction du type
passé. L'appelant n'a pas à se soucier de quoi que ce soit.
J'ai une deuxième classe qui contient la méthode suivante:
Classe 2 {
methode2 (Objet o) {
...
objetDeClasse1.methode1(o);
}
Le problème est que dans ce cas, c'est toujours la première méthode de
Classe1 (void methode1(Objet o)) qui est appelée, même lors d'un:
objetDeClasse2.methode2(new Integer(5));
Une parade consiste à aller chercher la méthode adéquate avec un
getClass().getMethod(), mais cela me parait lourd et risqué: il peut y avoir
des erreurs dans le nom de la méthode, puis à l'exécution, et il faut de
suite gerer 3 exceptions... :(
N'y aurait-il pas moyen de faire un cast dynamique? Je n'ai pas trouvé
d'infos sur le sujet.
Ma méthode2 s'écrirait alors dans le genre:
methode2 (Objet o) {
...
objetDeClasse1.methode1( (o.getClass()) o );
}
ce qui serait beaucoup plus simple à gérer, et plus propre à mon avis. Ou
alors dois-je revoir entièrement la structure de mon programme? Je cherche à
faire quelque chose de propre. Quelqu'un a une idée?
Merci d'avance pour votre aide.
Ced.
Le mieux peut être serait que tu nous dises ce que ton programme dois
Salut a tous!
Les 2 premieres questions que j'ai envoyé sur ce newsgroup n'ont jamais eu
de réponse. J'espère être plus chanceux cette fois ci...
J'ai une classe qui contient une méthode moult fois surchargée:
Classe1 {
void methode1(Objet o) {...}
void methode1(Integer o) {...}
void methode1(String o) {...}
void methode1(AutreObjet o) {...}
}
Cette classe permet de gérer le comportement de l'appli en fonction du type
passé. L'appelant n'a pas à se soucier de quoi que ce soit.
J'ai une deuxième classe qui contient la méthode suivante:
Classe 2 {
methode2 (Objet o) {
...
objetDeClasse1.methode1(o);
}
Le problème est que dans ce cas, c'est toujours la première méthode de
Classe1 (void methode1(Objet o)) qui est appelée, même lors d'un:
objetDeClasse2.methode2(new Integer(5));
Une parade consiste à aller chercher la méthode adéquate avec un
getClass().getMethod(), mais cela me parait lourd et risqué: il peut y avoir
des erreurs dans le nom de la méthode, puis à l'exécution, et il faut de
suite gerer 3 exceptions... :(
N'y aurait-il pas moyen de faire un cast dynamique? Je n'ai pas trouvé
d'infos sur le sujet.
Ma méthode2 s'écrirait alors dans le genre:
methode2 (Objet o) {
...
objetDeClasse1.methode1( (o.getClass()) o );
}
ce qui serait beaucoup plus simple à gérer, et plus propre à mon avis. Ou
alors dois-je revoir entièrement la structure de mon programme? Je cherche à
faire quelque chose de propre. Quelqu'un a une idée?
Merci d'avance pour votre aide.
Ced.
Le mieux peut être serait que tu nous dises ce que ton programme dois
Salut a tous!
Les 2 premieres questions que j'ai envoyé sur ce newsgroup n'ont jamais eu
de réponse. J'espère être plus chanceux cette fois ci...
J'ai une classe qui contient une méthode moult fois surchargée:
Classe1 {
void methode1(Objet o) {...}
void methode1(Integer o) {...}
void methode1(String o) {...}
void methode1(AutreObjet o) {...}
}
Cette classe permet de gérer le comportement de l'appli en fonction du type
passé. L'appelant n'a pas à se soucier de quoi que ce soit.
J'ai une deuxième classe qui contient la méthode suivante:
Classe 2 {
methode2 (Objet o) {
...
objetDeClasse1.methode1(o);
}
Le problème est que dans ce cas, c'est toujours la première méthode de
Classe1 (void methode1(Objet o)) qui est appelée, même lors d'un:
objetDeClasse2.methode2(new Integer(5));
Une parade consiste à aller chercher la méthode adéquate avec un
getClass().getMethod(), mais cela me parait lourd et risqué: il peut y avoir
des erreurs dans le nom de la méthode, puis à l'exécution, et il faut de
suite gerer 3 exceptions... :(
N'y aurait-il pas moyen de faire un cast dynamique? Je n'ai pas trouvé
d'infos sur le sujet.
Ma méthode2 s'écrirait alors dans le genre:
methode2 (Objet o) {
...
objetDeClasse1.methode1( (o.getClass()) o );
}
ce qui serait beaucoup plus simple à gérer, et plus propre à mon avis. Ou
alors dois-je revoir entièrement la structure de mon programme? Je cherche à
faire quelque chose de propre. Quelqu'un a une idée?
Merci d'avance pour votre aide.
Ced.
Le mieux peut être serait que tu nous dises ce que ton programme dois
Salut a tous!
Les 2 premieres questions que j'ai envoyé sur ce newsgroup n'ont jamais eu
de réponse. J'espère être plus chanceux cette fois ci...
J'ai une classe qui contient une méthode moult fois surchargée:
Cette classe permet de gérer le comportement de l'appli en fonction du type
passé. L'appelant n'a pas à se soucier de quoi que ce soit.
J'ai une deuxième classe qui contient la méthode suivante:
Classe 2 {
methode2 (Objet o) {
...
objetDeClasse1.methode1(o);
}
Le problème est que dans ce cas, c'est toujours la première méthode de
Classe1 (void methode1(Objet o)) qui est appelée, même lors d'un:
objetDeClasse2.methode2(new Integer(5));
Une parade consiste à aller chercher la méthode adéquate avec un
getClass().getMethod(), mais cela me parait lourd et risqué: il peut y avoir
des erreurs dans le nom de la méthode, puis à l'exécution, et il faut de
suite gerer 3 exceptions... :(
N'y aurait-il pas moyen de faire un cast dynamique? Je n'ai pas trouvé
d'infos sur le sujet.
Ma méthode2 s'écrirait alors dans le genre:
methode2 (Objet o) {
...
objetDeClasse1.methode1( (o.getClass()) o );
}
ce qui serait beaucoup plus simple à gérer, et plus propre à mon avis. Ou
alors dois-je revoir entièrement la structure de mon programme?
Je cherche à
faire quelque chose de propre. Quelqu'un a une idée?
Merci d'avance pour votre aide.
Ced.
Salut a tous!
Les 2 premieres questions que j'ai envoyé sur ce newsgroup n'ont jamais eu
de réponse. J'espère être plus chanceux cette fois ci...
J'ai une classe qui contient une méthode moult fois surchargée:
Cette classe permet de gérer le comportement de l'appli en fonction du type
passé. L'appelant n'a pas à se soucier de quoi que ce soit.
J'ai une deuxième classe qui contient la méthode suivante:
Classe 2 {
methode2 (Objet o) {
...
objetDeClasse1.methode1(o);
}
Le problème est que dans ce cas, c'est toujours la première méthode de
Classe1 (void methode1(Objet o)) qui est appelée, même lors d'un:
objetDeClasse2.methode2(new Integer(5));
Une parade consiste à aller chercher la méthode adéquate avec un
getClass().getMethod(), mais cela me parait lourd et risqué: il peut y avoir
des erreurs dans le nom de la méthode, puis à l'exécution, et il faut de
suite gerer 3 exceptions... :(
N'y aurait-il pas moyen de faire un cast dynamique? Je n'ai pas trouvé
d'infos sur le sujet.
Ma méthode2 s'écrirait alors dans le genre:
methode2 (Objet o) {
...
objetDeClasse1.methode1( (o.getClass()) o );
}
ce qui serait beaucoup plus simple à gérer, et plus propre à mon avis. Ou
alors dois-je revoir entièrement la structure de mon programme?
Je cherche à
faire quelque chose de propre. Quelqu'un a une idée?
Merci d'avance pour votre aide.
Ced.
Salut a tous!
Les 2 premieres questions que j'ai envoyé sur ce newsgroup n'ont jamais eu
de réponse. J'espère être plus chanceux cette fois ci...
J'ai une classe qui contient une méthode moult fois surchargée:
Cette classe permet de gérer le comportement de l'appli en fonction du type
passé. L'appelant n'a pas à se soucier de quoi que ce soit.
J'ai une deuxième classe qui contient la méthode suivante:
Classe 2 {
methode2 (Objet o) {
...
objetDeClasse1.methode1(o);
}
Le problème est que dans ce cas, c'est toujours la première méthode de
Classe1 (void methode1(Objet o)) qui est appelée, même lors d'un:
objetDeClasse2.methode2(new Integer(5));
Une parade consiste à aller chercher la méthode adéquate avec un
getClass().getMethod(), mais cela me parait lourd et risqué: il peut y avoir
des erreurs dans le nom de la méthode, puis à l'exécution, et il faut de
suite gerer 3 exceptions... :(
N'y aurait-il pas moyen de faire un cast dynamique? Je n'ai pas trouvé
d'infos sur le sujet.
Ma méthode2 s'écrirait alors dans le genre:
methode2 (Objet o) {
...
objetDeClasse1.methode1( (o.getClass()) o );
}
ce qui serait beaucoup plus simple à gérer, et plus propre à mon avis. Ou
alors dois-je revoir entièrement la structure de mon programme?
Je cherche à
faire quelque chose de propre. Quelqu'un a une idée?
Merci d'avance pour votre aide.
Ced.
J'ai une classe qui contient une méthode moult fois surchargée:
void methode1(Objet o) {...}
void methode1(Integer o) {...}
void methode1(String o) {...}
void methode1(AutreObjet o) {...}
J'ai une classe qui contient une méthode moult fois surchargée:
void methode1(Objet o) {...}
void methode1(Integer o) {...}
void methode1(String o) {...}
void methode1(AutreObjet o) {...}
J'ai une classe qui contient une méthode moult fois surchargée:
void methode1(Objet o) {...}
void methode1(Integer o) {...}
void methode1(String o) {...}
void methode1(AutreObjet o) {...}
Salut a tous!
Les 2 premieres questions que j'ai envoyé sur ce newsgroup n'ont jamais eu
de réponse. J'espère être plus chanceux cette fois ci...
Aller t'en auras une cette fois...
J'ai une classe qui contient une méthode moult fois surchargée:
Classe1 {
void methode1(Objet o) {...}
void methode1(Integer o) {...}
void methode1(String o) {...}
void methode1(AutreObjet o) {...}
}
Cette classe permet de gérer le comportement de l'appli en fonction du type
passé. L'appelant n'a pas à se soucier de quoi que ce soit.
J'ai une deuxième classe qui contient la méthode suivante:
Classe 2 {
methode2 (Objet o) {
...
objetDeClasse1.methode1(o);
}
Le problème est que dans ce cas, c'est toujours la première méthode de
Classe1 (void methode1(Objet o)) qui est appelée, même lors d'un:
objetDeClasse2.methode2(new Integer(5));
Une parade consiste à aller chercher la méthode adéquate avec un
getClass().getMethod(), mais cela me parait lourd et risqué: il peut y avoir
des erreurs dans le nom de la méthode, puis à l'exécution, et il faut de
suite gerer 3 exceptions... :(
Lourd et risqué, effectivement (et plutôt moche de surcroit).
N'y aurait-il pas moyen de faire un cast dynamique? Je n'ai pas trouvé
d'infos sur le sujet.
Pas à ma connaissance, d'ailleurs à la limite si la résolution de cet
Ou
alors dois-je revoir entièrement la structure de mon programme? Je cherche à
faire quelque chose de propre. Quelqu'un a une idée?
Effectivement il y a probablement une façon plus élégante de faire,
Merci d'avance pour votre aide.
De rien en espérant t'avoir aider...
Ced.
Vincent.
Salut a tous!
Les 2 premieres questions que j'ai envoyé sur ce newsgroup n'ont jamais eu
de réponse. J'espère être plus chanceux cette fois ci...
Aller t'en auras une cette fois...
J'ai une classe qui contient une méthode moult fois surchargée:
Classe1 {
void methode1(Objet o) {...}
void methode1(Integer o) {...}
void methode1(String o) {...}
void methode1(AutreObjet o) {...}
}
Cette classe permet de gérer le comportement de l'appli en fonction du type
passé. L'appelant n'a pas à se soucier de quoi que ce soit.
J'ai une deuxième classe qui contient la méthode suivante:
Classe 2 {
methode2 (Objet o) {
...
objetDeClasse1.methode1(o);
}
Le problème est que dans ce cas, c'est toujours la première méthode de
Classe1 (void methode1(Objet o)) qui est appelée, même lors d'un:
objetDeClasse2.methode2(new Integer(5));
Une parade consiste à aller chercher la méthode adéquate avec un
getClass().getMethod(), mais cela me parait lourd et risqué: il peut y avoir
des erreurs dans le nom de la méthode, puis à l'exécution, et il faut de
suite gerer 3 exceptions... :(
Lourd et risqué, effectivement (et plutôt moche de surcroit).
N'y aurait-il pas moyen de faire un cast dynamique? Je n'ai pas trouvé
d'infos sur le sujet.
Pas à ma connaissance, d'ailleurs à la limite si la résolution de cet
Ou
alors dois-je revoir entièrement la structure de mon programme? Je cherche à
faire quelque chose de propre. Quelqu'un a une idée?
Effectivement il y a probablement une façon plus élégante de faire,
Merci d'avance pour votre aide.
De rien en espérant t'avoir aider...
Ced.
Vincent.
Salut a tous!
Les 2 premieres questions que j'ai envoyé sur ce newsgroup n'ont jamais eu
de réponse. J'espère être plus chanceux cette fois ci...
Aller t'en auras une cette fois...
J'ai une classe qui contient une méthode moult fois surchargée:
Classe1 {
void methode1(Objet o) {...}
void methode1(Integer o) {...}
void methode1(String o) {...}
void methode1(AutreObjet o) {...}
}
Cette classe permet de gérer le comportement de l'appli en fonction du type
passé. L'appelant n'a pas à se soucier de quoi que ce soit.
J'ai une deuxième classe qui contient la méthode suivante:
Classe 2 {
methode2 (Objet o) {
...
objetDeClasse1.methode1(o);
}
Le problème est que dans ce cas, c'est toujours la première méthode de
Classe1 (void methode1(Objet o)) qui est appelée, même lors d'un:
objetDeClasse2.methode2(new Integer(5));
Une parade consiste à aller chercher la méthode adéquate avec un
getClass().getMethod(), mais cela me parait lourd et risqué: il peut y avoir
des erreurs dans le nom de la méthode, puis à l'exécution, et il faut de
suite gerer 3 exceptions... :(
Lourd et risqué, effectivement (et plutôt moche de surcroit).
N'y aurait-il pas moyen de faire un cast dynamique? Je n'ai pas trouvé
d'infos sur le sujet.
Pas à ma connaissance, d'ailleurs à la limite si la résolution de cet
Ou
alors dois-je revoir entièrement la structure de mon programme? Je cherche à
faire quelque chose de propre. Quelqu'un a une idée?
Effectivement il y a probablement une façon plus élégante de faire,
Merci d'avance pour votre aide.
De rien en espérant t'avoir aider...
Ced.
Vincent.
Sinon tu peux faire un truc dans ce goût là.
if (o instanceof Integer)
cl1().methode1((Integer)o);
else if (o instanceof String)
cl1().methode1((String)o);
else
cl1().methode1(o);
Si tu opte pour ça autant écrire des noms différents, comme dans les
classe DataInputStream et DataOutputStream. Ce qui donne
if (o instanceof Integer)
cl1().methode1Integer((Integer)o);
else if (o instanceof String)
cl1().methode1String((String)o);
else
cl1().methode1(o);
Sinon tu peux faire un truc dans ce goût là.
if (o instanceof Integer)
cl1().methode1((Integer)o);
else if (o instanceof String)
cl1().methode1((String)o);
else
cl1().methode1(o);
Si tu opte pour ça autant écrire des noms différents, comme dans les
classe DataInputStream et DataOutputStream. Ce qui donne
if (o instanceof Integer)
cl1().methode1Integer((Integer)o);
else if (o instanceof String)
cl1().methode1String((String)o);
else
cl1().methode1(o);
Sinon tu peux faire un truc dans ce goût là.
if (o instanceof Integer)
cl1().methode1((Integer)o);
else if (o instanceof String)
cl1().methode1((String)o);
else
cl1().methode1(o);
Si tu opte pour ça autant écrire des noms différents, comme dans les
classe DataInputStream et DataOutputStream. Ce qui donne
if (o instanceof Integer)
cl1().methode1Integer((Integer)o);
else if (o instanceof String)
cl1().methode1String((String)o);
else
cl1().methode1(o);
le pattern visitor est ton ami :)
le pattern visitor est ton ami :)
le pattern visitor est ton ami :)
<snip code honteux plein de instanceof>
arghllll , quelle horreur :)
jamais faire d'instanceof, cela denote une faiblesse de design evidente...
Euh, je ne dirais pas ça comme ça. L'instanceof à son utilité, même si
le pattern visitor est ton ami :)
SON ami
<snip code honteux plein de instanceof>
arghllll , quelle horreur :)
jamais faire d'instanceof, cela denote une faiblesse de design evidente...
Euh, je ne dirais pas ça comme ça. L'instanceof à son utilité, même si
le pattern visitor est ton ami :)
SON ami
<snip code honteux plein de instanceof>
arghllll , quelle horreur :)
jamais faire d'instanceof, cela denote une faiblesse de design evidente...
Euh, je ne dirais pas ça comme ça. L'instanceof à son utilité, même si
le pattern visitor est ton ami :)
SON ami
le pattern visitor est ton ami :)
Difficile à utiliser quand on traite des String ou Integer, non ? Ces
classes sont déclarées "final", ce qui empêche de leur ajouter une
méthode accept().
certes mais on peut toujours imaginer une encapsulation..lourdingue
Pour être complet notons que le pattern Visitor est une technique
d'implémentation du Double Dispatch, qui est lui-même un cas particulier
du multiple dispatch auquel je faisais allusion tout à l'heure.
exact...
le pattern visitor est ton ami :)
Difficile à utiliser quand on traite des String ou Integer, non ? Ces
classes sont déclarées "final", ce qui empêche de leur ajouter une
méthode accept().
certes mais on peut toujours imaginer une encapsulation..lourdingue
Pour être complet notons que le pattern Visitor est une technique
d'implémentation du Double Dispatch, qui est lui-même un cas particulier
du multiple dispatch auquel je faisais allusion tout à l'heure.
exact...
le pattern visitor est ton ami :)
Difficile à utiliser quand on traite des String ou Integer, non ? Ces
classes sont déclarées "final", ce qui empêche de leur ajouter une
méthode accept().
certes mais on peut toujours imaginer une encapsulation..lourdingue
Pour être complet notons que le pattern Visitor est une technique
d'implémentation du Double Dispatch, qui est lui-même un cas particulier
du multiple dispatch auquel je faisais allusion tout à l'heure.
exact...
jerome moliere wrote in
message news:...
<snip code honteux plein de instanceof>
arghllll , quelle horreur :)
jamais faire d'instanceof, cela denote une faiblesse de design
evidente...
Euh, je ne dirais pas ça comme ça. L'instanceof à son utilité, même si
en l'occurence il dénote très probablement une faiblesse de design.le pattern visitor est ton ami :)
SON ami
En fait j'ai écrit ça comme alternative au "cast dynamique" qu'il
cherche mais qui n'éxiste pas. Ou aussi comme alternative à un cast
static qu'il comptait, semble-t-il, gérer avec des
ClassCastException...
C'étatit donc une solution du "moins pire". Plus bas j'ai écrit qu'il
y aurait surement mieux à faire, mais avec le peu d'info dont on
dispose difficile de dire quoi...
jerome moliere <jmoliereabaslespam-nospam-at-all@linagora.com> wrote in
message news:<3F9FCB32.7020602@linagora.com>...
<snip code honteux plein de instanceof>
arghllll , quelle horreur :)
jamais faire d'instanceof, cela denote une faiblesse de design
evidente...
Euh, je ne dirais pas ça comme ça. L'instanceof à son utilité, même si
en l'occurence il dénote très probablement une faiblesse de design.
le pattern visitor est ton ami :)
SON ami
En fait j'ai écrit ça comme alternative au "cast dynamique" qu'il
cherche mais qui n'éxiste pas. Ou aussi comme alternative à un cast
static qu'il comptait, semble-t-il, gérer avec des
ClassCastException...
C'étatit donc une solution du "moins pire". Plus bas j'ai écrit qu'il
y aurait surement mieux à faire, mais avec le peu d'info dont on
dispose difficile de dire quoi...
jerome moliere wrote in
message news:...
<snip code honteux plein de instanceof>
arghllll , quelle horreur :)
jamais faire d'instanceof, cela denote une faiblesse de design
evidente...
Euh, je ne dirais pas ça comme ça. L'instanceof à son utilité, même si
en l'occurence il dénote très probablement une faiblesse de design.le pattern visitor est ton ami :)
SON ami
En fait j'ai écrit ça comme alternative au "cast dynamique" qu'il
cherche mais qui n'éxiste pas. Ou aussi comme alternative à un cast
static qu'il comptait, semble-t-il, gérer avec des
ClassCastException...
C'étatit donc une solution du "moins pire". Plus bas j'ai écrit qu'il
y aurait surement mieux à faire, mais avec le peu d'info dont on
dispose difficile de dire quoi...