2009-05-20 4 views

Répondre

16

Non. C'est exactement la définition d'Object. equals().

... cette méthode retourne true si et seulement si x et y faire référence au même objet (x == y a la valeur true) ...

public boolean equals(Object o) { 
    return this == o; 
} 
0

Non, si equals() n'est pas substituée, elle renvoie true si les objets sont les mêmes objets identiques en mémoire.

2

Le objet src Object.java définit sa méthode égale comme;

return (this == obj) 

donc pas :-)

0

Non La classe réelle de object0 (pas nécessairement le type déclaré de la variable) must ont redéfinis égaux(). Essayez d'imprimer object0.getClass().

0

Voici le code source pour Object.equals:

public boolean equals(Object obj) { 
    151   return (this == obj); 
    152  } 
    153 

Ainsi, n °

8

Oui, si par "le type de object0 ne remplace pas Object.equals()" vous voulez dire la type spécifique et pas une superclasse.

Si object0 et object1 sont de type B, B extends A, et A remplace equals(Object obj) mais B ne pas, alors il est possible que B ne remplace pas equals(Object obj) mais (object0 == object1) != (object0.equals(object1)).

5

Eh bien, si object0 == null et object1 == null, le premier enverra vrai, et le second une NullPointerException ;-) En dehors de cela, il ne devrait pas y avoir de différence observable.

3

Bien que les objets ne remplacent pas eux-mêmes égaux(), il est possible que l'un des superclasse de l'objet remplace la méthode equals() ...

Si vous utilisez Eclipse: ouvrez le object.java fichier et appuyez deux fois sur control-o. Tapez 'equals' et vérifiez si vous ne voyez qu'une seule méthode 'equals': la méthode equals de l'objet

1

Oui, null == null est vrai, mais null.equals(null) n'est pas défini.

+3

@egaga. Il est défini ... pour lancer une exception NullPointerException! –

Questions connexes