j'ai un objet, disons "o", qui peut-être soit une String soit une Map,
je ne connais pas la méthode la plus élégante, disons la pus "javaish"
pour tester la classe de cette objet, ce que je fais et qui marche :
j'ai un autre objet "on" qui est toujours une String je fais donc :
String onClass = on.getClass().toString();
par ailleurs :
String oClass = o.getClass().toString();
puis je teste sans pb:
if (onClass.equals(oClass) {
faire ce qu'il faut dans ce cas là...
}
j'ai essayé, sans succès :
if ("java.lang.String".equals(oClass) {...
l'égalité n'est jamais trouvée... ce que je ne comprend pas.
d'où ma question, donc si vous avez des lumières à m'apporter, j'en
serai ravi et vous remercie d'avance...
ben, le test est tjs à faux... comme dans mon cas... -- yt
no.bcausse.spam
Yvon Thoraval wrote:
Bonjour,
j'ai un objet, disons "o", qui peut-être soit une String soit une Map, je ne connais pas la méthode la plus élégante, disons la pus "javaish" pour tester la classe de cette objet, ce que je fais et qui marche :
j'ai un autre objet "on" qui est toujours une String je fais donc :
String onClass = on.getClass().toString(); par ailleurs : String oClass = o.getClass().toString(); puis je teste sans pb:
if (onClass.equals(oClass) { faire ce qu'il faut dans ce cas là... }
j'ai essayé, sans succès :
if ("java.lang.String".equals(oClass) {...
l'égalité n'est jamais trouvée... ce que je ne comprend pas.
d'où ma question, donc si vous avez des lumières à m'apporter, j'en serai ravi et vous remercie d'avance...
isInstance(Object obj) ou instanceof -- bruno Causse http://perso.wanadoo.fr/othello
j'ai un objet, disons "o", qui peut-être soit une String soit une Map,
je ne connais pas la méthode la plus élégante, disons la pus "javaish"
pour tester la classe de cette objet, ce que je fais et qui marche :
j'ai un autre objet "on" qui est toujours une String je fais donc :
String onClass = on.getClass().toString();
par ailleurs :
String oClass = o.getClass().toString();
puis je teste sans pb:
if (onClass.equals(oClass) {
faire ce qu'il faut dans ce cas là...
}
j'ai essayé, sans succès :
if ("java.lang.String".equals(oClass) {...
l'égalité n'est jamais trouvée... ce que je ne comprend pas.
d'où ma question, donc si vous avez des lumières à m'apporter, j'en
serai ravi et vous remercie d'avance...
isInstance(Object obj) ou instanceof
--
bruno Causse
http://perso.wanadoo.fr/othello
j'ai un objet, disons "o", qui peut-être soit une String soit une Map, je ne connais pas la méthode la plus élégante, disons la pus "javaish" pour tester la classe de cette objet, ce que je fais et qui marche :
j'ai un autre objet "on" qui est toujours une String je fais donc :
String onClass = on.getClass().toString(); par ailleurs : String oClass = o.getClass().toString(); puis je teste sans pb:
if (onClass.equals(oClass) { faire ce qu'il faut dans ce cas là... }
j'ai essayé, sans succès :
if ("java.lang.String".equals(oClass) {...
l'égalité n'est jamais trouvée... ce que je ne comprend pas.
d'où ma question, donc si vous avez des lumières à m'apporter, j'en serai ravi et vous remercie d'avance...
isInstance(Object obj) ou instanceof -- bruno Causse http://perso.wanadoo.fr/othello
remy
"Yvon Thoraval" a écrit dans le message de news: 1gli2xz.165wiod1fnsqegN%
remy wrote:
peut etre
ben, le test est tjs à faux... comme dans mon cas...
public class test { public string toString() { return new String ("test"); } }
....
String t=new String("test"); test t1=new test(); System.out.println(t.equals(t1toString()));
a teste cela doit le faire a+ remy
-- yt
"Yvon Thoraval" <yvon.thoravalNO-SPAM@free.fr> a écrit dans le message de
news: 1gli2xz.165wiod1fnsqegN%yvon.thoravalNO-SPAM@free.fr...
remy <remy@fctpas.fr> wrote:
peut etre
ben, le test est tjs à faux... comme dans mon cas...
public class test
{
public string toString()
{
return new String ("test");
}
}
....
String t=new String("test");
test t1=new test();
System.out.println(t.equals(t1toString()));
"Yvon Thoraval" a écrit dans le message de news: 1gli2xz.165wiod1fnsqegN%
remy wrote:
peut etre
ben, le test est tjs à faux... comme dans mon cas...
public class test { public string toString() { return new String ("test"); } }
....
String t=new String("test"); test t1=new test(); System.out.println(t.equals(t1toString()));
a teste cela doit le faire a+ remy
-- yt
Laurent Bossavit
Yvon,
j'ai essayé, sans succès : if ("java.lang.String".equals(oClass) {...
C'est normal: Class.toString() renvoie une chaîne de la forme "class X", ou X est le nom qualifié de la classe.
Comme d'autres l'ont signalé, l'opérateur instanceof est plus indiqué, sauf que...
j'ai un objet, disons "o", qui peut-être soit une String soit une Map, je ne connais pas la méthode la plus élégante, disons la pus "javaish" pour tester la classe de cette objet, ce que je fais et qui marche :
A l'exception des méthodes qui surchargent equals(), tester la classe d'un objet est presque toujours signe d'un défaut de conception.
En l'occurrence, une String et une Map n'ont pas le même contrat, il semble donc extrêmement étrange de pouvoir les rencontrer dans une même référence polymorphique.
Es-tu sûr que ta conception actuelle est satisfaisante ?
Laurent http://bossavit.com/thoughts/
Yvon,
j'ai essayé, sans succès :
if ("java.lang.String".equals(oClass) {...
C'est normal: Class.toString() renvoie une chaîne de la forme "class X",
ou X est le nom qualifié de la classe.
Comme d'autres l'ont signalé, l'opérateur instanceof est plus indiqué,
sauf que...
j'ai un objet, disons "o", qui peut-être soit une String soit une Map,
je ne connais pas la méthode la plus élégante, disons la pus "javaish"
pour tester la classe de cette objet, ce que je fais et qui marche :
A l'exception des méthodes qui surchargent equals(), tester la classe
d'un objet est presque toujours signe d'un défaut de conception.
En l'occurrence, une String et une Map n'ont pas le même contrat, il
semble donc extrêmement étrange de pouvoir les rencontrer dans une même
référence polymorphique.
Es-tu sûr que ta conception actuelle est satisfaisante ?
j'ai essayé, sans succès : if ("java.lang.String".equals(oClass) {...
C'est normal: Class.toString() renvoie une chaîne de la forme "class X", ou X est le nom qualifié de la classe.
Comme d'autres l'ont signalé, l'opérateur instanceof est plus indiqué, sauf que...
j'ai un objet, disons "o", qui peut-être soit une String soit une Map, je ne connais pas la méthode la plus élégante, disons la pus "javaish" pour tester la classe de cette objet, ce que je fais et qui marche :
A l'exception des méthodes qui surchargent equals(), tester la classe d'un objet est presque toujours signe d'un défaut de conception.
En l'occurrence, une String et une Map n'ont pas le même contrat, il semble donc extrêmement étrange de pouvoir les rencontrer dans une même référence polymorphique.
Es-tu sûr que ta conception actuelle est satisfaisante ?
Laurent http://bossavit.com/thoughts/
Thibaut Desmarest
A l'exception des méthodes qui surchargent equals(), tester la classe d'un objet est presque toujours signe d'un défaut de conception.
Euh juste pour me rassurer alors, j'aimerais savoir si d'après toi mon utilisation de instanceof est justifiée ou si elle découle d'un défaut de conception :
J'ai ajouté dans mon programme un KeyListener sur la touche Entrée qui permet de passer le Focus, un peu comme la touche TAB.
Dans le keyTyped, je fais des tests avec instanceof pour savoir quel est le type de JComponent qui avait le focus.
instanceof JTextField, instanceof JButton etc... Pour faire des traitements différents...
Y'avait t'il une manière plus intelligente de procéder ?
Merci d'avance,
Thibaut
A l'exception des méthodes qui surchargent equals(), tester la classe
d'un objet est presque toujours signe d'un défaut de conception.
Euh juste pour me rassurer alors, j'aimerais savoir si d'après toi mon
utilisation de instanceof est justifiée ou si elle découle d'un défaut
de conception :
J'ai ajouté dans mon programme un KeyListener sur la touche Entrée qui
permet de passer le Focus, un peu comme la touche TAB.
Dans le keyTyped, je fais des tests avec instanceof pour savoir
quel est le type de JComponent qui avait le focus.
instanceof JTextField, instanceof JButton etc... Pour faire des
traitements différents...
Y'avait t'il une manière plus intelligente de procéder ?
A l'exception des méthodes qui surchargent equals(), tester la classe d'un objet est presque toujours signe d'un défaut de conception.
Euh juste pour me rassurer alors, j'aimerais savoir si d'après toi mon utilisation de instanceof est justifiée ou si elle découle d'un défaut de conception :
J'ai ajouté dans mon programme un KeyListener sur la touche Entrée qui permet de passer le Focus, un peu comme la touche TAB.
Dans le keyTyped, je fais des tests avec instanceof pour savoir quel est le type de JComponent qui avait le focus.
instanceof JTextField, instanceof JButton etc... Pour faire des traitements différents...
Y'avait t'il une manière plus intelligente de procéder ?
Merci d'avance,
Thibaut
remy
Dans le keyTyped, je fais des tests avec instanceof pour savoir quel est le type de JComponent qui avait le focus. regarde dans ton fichier scr.jar recherche focus
il y a FocusEvent.java et FocusListener .java
peut etre
a+ remy
Dans le keyTyped, je fais des tests avec instanceof pour savoir
quel est le type de JComponent qui avait le focus.
regarde dans ton fichier scr.jar recherche focus
Dans le keyTyped, je fais des tests avec instanceof pour savoir quel est le type de JComponent qui avait le focus. regarde dans ton fichier scr.jar recherche focus
il y a FocusEvent.java et FocusListener .java
peut etre
a+ remy
Laurent Bossavit
Thibaut,
instanceof JTextField, instanceof JButton etc... Pour faire des traitements différents...
Différents de quelle manière ?
Y'avait t'il une manière plus intelligente de procéder ?
Dans la mesure où tu n'as pas la main sur la hiérarchie de classes de Swing, je n'en mettrais pas ma tête à couper. Normalement, tu remplaces le test sur la classe par un appel polymorphique. Dans ce cas précis, tu ne peux pas le faire directement. Il faut utiliser un Decorator (*), ou alors changer complètement d'algorithme comme le suggère Rémy.
Lorsque tu examines la classe pour déterminer le bon comportement, le problème que tu créées est le suivant: à chaque fois que tu veux prendre en compte une nouvelle sous-classe de JComponent dans ta hiérarchie (mettons que tu rajoutes à ton application un JAudioSampleButton qui te permet de choisir un son, alors que tu n'en avais pas eu besoin jusqu'à présent) tu dois ajouter un cas à ton test.
Il serait préférable que toutes les modifications nécessaires pour prendre en compte un JAudioSampleButton soient contenues... dans JAudioSampleButton, et pas ailleurs.
(*) Un exemple de Decorator pour la hiérarchie JComponent: http://www.onjava.com/pub/a/onjava/2003/02/05/decorator.html
Laurent http://bossavit.com/thoughts/
Thibaut,
instanceof JTextField, instanceof JButton etc... Pour faire des
traitements différents...
Différents de quelle manière ?
Y'avait t'il une manière plus intelligente de procéder ?
Dans la mesure où tu n'as pas la main sur la hiérarchie de classes de
Swing, je n'en mettrais pas ma tête à couper. Normalement, tu remplaces
le test sur la classe par un appel polymorphique. Dans ce cas précis, tu
ne peux pas le faire directement. Il faut utiliser un Decorator (*), ou
alors changer complètement d'algorithme comme le suggère Rémy.
Lorsque tu examines la classe pour déterminer le bon comportement, le
problème que tu créées est le suivant: à chaque fois que tu veux prendre
en compte une nouvelle sous-classe de JComponent dans ta hiérarchie
(mettons que tu rajoutes à ton application un JAudioSampleButton qui te
permet de choisir un son, alors que tu n'en avais pas eu besoin jusqu'à
présent) tu dois ajouter un cas à ton test.
Il serait préférable que toutes les modifications nécessaires pour
prendre en compte un JAudioSampleButton soient contenues... dans
JAudioSampleButton, et pas ailleurs.
(*) Un exemple de Decorator pour la hiérarchie JComponent:
http://www.onjava.com/pub/a/onjava/2003/02/05/decorator.html
instanceof JTextField, instanceof JButton etc... Pour faire des traitements différents...
Différents de quelle manière ?
Y'avait t'il une manière plus intelligente de procéder ?
Dans la mesure où tu n'as pas la main sur la hiérarchie de classes de Swing, je n'en mettrais pas ma tête à couper. Normalement, tu remplaces le test sur la classe par un appel polymorphique. Dans ce cas précis, tu ne peux pas le faire directement. Il faut utiliser un Decorator (*), ou alors changer complètement d'algorithme comme le suggère Rémy.
Lorsque tu examines la classe pour déterminer le bon comportement, le problème que tu créées est le suivant: à chaque fois que tu veux prendre en compte une nouvelle sous-classe de JComponent dans ta hiérarchie (mettons que tu rajoutes à ton application un JAudioSampleButton qui te permet de choisir un son, alors que tu n'en avais pas eu besoin jusqu'à présent) tu dois ajouter un cas à ton test.
Il serait préférable que toutes les modifications nécessaires pour prendre en compte un JAudioSampleButton soient contenues... dans JAudioSampleButton, et pas ailleurs.
(*) Un exemple de Decorator pour la hiérarchie JComponent: http://www.onjava.com/pub/a/onjava/2003/02/05/decorator.html