Pascal EMMA wrote:
Bonjour,es tu sur de tes lectures (de la synthese faite ?)...
Deux livres se contredisent sur ce sujet :
L'un dit que les op�rateurs de comparaison ne s'appliquent qu'aux valeurs num�riques et l'op�rateur instanceof aux r�f�rences d'objet,
L'autre dit que ces op�rateurs s'appliquent aussi bien aux valeurs primitives qu'aux r�f�rences d'objet.
Il semblerait que les op�rateurs de comparaisons (<, >, <=, >=, ==, !=) s'appliquent � toute les valeurs primitives ainsi qu'aux cha�nes de caract�res et l'op�rateur instanceof � toutes r�f�rences d'objet. Est-ce cela ?
instanceof est un operateur ne s'appliquant qu'a des objets (references) et te permettant de savoir si le type dynamique d'un objet est celui (ou celui d'une classe heritee) de l'objet par rapport auquel tu compares...
il n' y a pas de relation d'ordre, juste une notion de hierarchie...
cet operateur au passage est lent et a eviter comme la peste...
cf scott meyers qui affirme qu'utiliser ce type d'operateur implique un mauvais design (pas de polymorphisme)...
c'est vrai selon moi a 95% des cas, dans des factories, dans le cas d'instanciations dynamiques il est bon de tester via un operateur de ce genre (preferer isAssignableFrom()).
en Java il n'y a pas de sens a dire obj1<obj2 le seul operateur utilise est == (et !=)
qui compare les references (pointeurs) d'ou l'egalite semantique (le sens ) avec .equals()
on ne fait pas de C++, donc pas de redefinition des operateurs...
Jerome
