Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question de newbie (instanceof)

6 réponses
Avatar
Bernard Koninckx
Bonjour à tous,

Je cherche a savoir si une instance d'objet correspond à un type de classe
et me demande si l'instruction instanceof est bien la meilleure solution
pour ce type de condition ?

Merci d'avance à tous pour vos avis, commentaires, ... et remarques

Bernard

6 réponses

Avatar
jerome moliere
Bernard Koninckx wrote:

Bonjour à tous,

Je cherche a savoir si une instance d'objet correspond à un type de classe
et me demande si l'instruction instanceof est bien la meilleure solution
pour ce type de condition ?

grammaticalement oui...

il y a d'autres methodes , plus rapides etc..
mais c'est l'idee (isssignableFrom notamment)
mais conceptuellement: generalement NON!!!
l'idée de faire des choses:
Object obj =...
if( obj.getClass().isAssignableFrom(Foo.class)) ou une autre criture
avec instanceof (qu irevient au même)
est à déconseillé dans 99,99% des cas...
motif:pauvreté de la conception
pas tres objet tout cela...

voilà
Jerome


Merci d'avance à tous pour vos avis, commentaires, ... et remarques



--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean13—82212111941

Avatar
Nicolas Delsaux
Le 14 avr. 2004, jerome moliere s'est levé(e) et s'est dit "tiens, si
j'écrivais aux mecs de fr.comp.lang.java"

grammaticalement oui...
il y a d'autres methodes , plus rapides etc..
mais c'est l'idee (isssignableFrom notamment)
mais conceptuellement: generalement NON!!!
l'idée de faire des choses:
Object obj =...
if( obj.getClass().isAssignableFrom(Foo.class)) ou une autre criture
avec instanceof (qu irevient au même)
est à déconseillé dans 99,99% des cas...
motif:pauvreté de la conception
pas tres objet tout cela...


Toujours aussi didactique, Mr Molière ;-)
Là, notre brave Bernard se demande ce qu'il a bien pu faire pour mériter
tout ça.
En fait, si instanceof est une si mauvaise idée, c'est parce qu'il brise
l'importante notion objet d'encapsulation : si on sait qu'un objet est de
la classe Toto, alors on peut lui faire ça.
Par expérience, on se rend compte que, dans la plupart des cas, le
instanceof devrait être remplacé par une interface qui, malheureusement,
n'a pas été codée.
A bon entendeur ..

voilà
Jerome



--
Nicolas Delsaux
"Il n'est pas logique de craindre la douleur. Il est uniquement logique de
craindre les dommages qui engendrent la douleur."
Parade nuptiale - Donald Kingsbury

Avatar
Laurent Nel
Bonjour,

En fait, si instanceof est une si mauvaise idée, c'est parce qu'il brise
l'importante notion objet d'encapsulation : si on sait qu'un objet est de
la classe Toto, alors on peut lui faire ça.


Je vois plutôt l'usage abusif de instanceof comme une non-utilisation du
polymorphisme et donc peut-être une mauvaise compréhension de ce mécanisme.
Cad qu'on a besoin de tester le type de l'objet pour lui appliquer un
traitement, ce qui est naturellement fait par un polymorphisme bien utilisé,
notamment par l'emploi d'interfaces.

Laurent

--
Laurent NEL, Associé-Gérant

www.leuville.com / Conseil - Ingénierie - Formation
Java - J2EE - UML

Offres d'emploi: http://www.leuville.com/entry_servlet?screenÊrrieres

Avatar
Benoît Chauvet
jerome moliere wrote:
(...)
mais conceptuellement: generalement NON!!!
l'idée de faire des choses:
Object obj =...
if( obj.getClass().isAssignableFrom(Foo.class)) ou une autre criture
avec instanceof (qu irevient au même)
est à déconseillé dans 99,99% des cas...
motif:pauvreté de la conception
pas tres objet tout cela...


Je ferais plus de instanceof, le jour où j'aurais plus besoin de faire de
cast.
Et je ferais plus de cast, le jour où les collections du JDK renverront
autre chose que des Object.

=)

Hein, c'est prévu dans le 1.5 ? Chouette, vive les template, alors !

Enfin, on verra...

--
Orabîg

Avatar
captainpaf
"Benoît Chauvet" a écrit dans le
message de news: c5m6c3$285$
jerome moliere wrote:
(...)
mais conceptuellement: generalement NON!!!
l'idée de faire des choses:
Object obj =...
if( obj.getClass().isAssignableFrom(Foo.class)) ou une autre criture
avec instanceof (qu irevient au même)
est à déconseillé dans 99,99% des cas...
motif:pauvreté de la conception
pas tres objet tout cela...


Je ferais plus de instanceof, le jour où j'aurais plus besoin de faire de
cast.
Et je ferais plus de cast, le jour où les collections du JDK renverront
autre chose que des Object.

=)

Hein, c'est prévu dans le 1.5 ? Chouette, vive les template, alors !

Enfin, on verra...

--
Orabîg


Alors là je vois pas du tout le rapport. Généralement tu sais quel type

d'objet tu mets dans ta collections, je ne vois donc pas du tout quel mal il
y a à les caster. Et une collection par définition doit (ou du moins
devrait) renfermer le même type (ou super type) d'objets.
La majeur partie du temps, si tu as définis correctement tes interfaces (ok
ce n'est pas toujours le plus simple), tu n'as pas à utiliser instanceof.



---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.656 / Virus Database: 421 - Release Date: 09/04/2004


Avatar
Bernard Koninckx
Bonjour,

j'ai lu vos réponses et souhaite savoir quelles sont vos suggestions quant à
l'utilisaton d'interface dont la plupart d'entre vous parlent. Je souhaite
également savoir votre avis sur la méthode objet (de bonnes sources, livres,
adresses, ...)

Merci à tous d'avance pour votre collaboration.

Bernard
"Bernard Koninckx" a écrit dans le message de
news: 407d67a8$0$311$
Bonjour à tous,

Je cherche a savoir si une instance d'objet correspond à un type de classe
et me demande si l'instruction instanceof est bien la meilleure solution
pour ce type de condition ?

Merci d'avance à tous pour vos avis, commentaires, ... et remarques

Bernard