71 votes

Java est égal à une classe. Est == identique à .equals

Pouvons-nous faire une == sur une variable Class au lieu de equals et attendre le même résultat?

Par exemple:

 Class clazz = xyz;
 

Cas A:

 if(clazz == Date.class) {
// do something
}
 

Cas B:

 if(Date.class.equals(clazz)) {
// do something
}
 

Les cas A et B sont-ils fonctionnellement identiques?

85voto

Peter Lawrey Points 229686

La classe est finale, donc son equals () ne peut pas être remplacé. Sa méthode equals () est héritée de Object qui lit

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

Donc oui, c'est la même chose pour une classe ou pour tout type qui ne remplace pas equals(Object)

Pour répondre à votre deuxième question, chaque chargeur de classe ne peut charger une classe qu'une seule fois et vous donnera toujours la même classe pour un nom complet donné.

6voto

cheeken Points 9013

Oui.

Jetez un oeil à la Classe description de la classe et la note qu'il hérite equals de Object, pour lesquels la méthode se lit comme suit:

"La méthode equals de la classe de l'Objet met en œuvre le plus discriminant possible relation d'équivalence sur les objets; c'est, pour tout non-nulles de référence les valeurs de x et y, cette méthode renvoie true si et seulement si x et y désignent le même objet (x == y a la valeur true)."

4voto

JVerstry Points 12414

Oui, puisque le code pour equals(...) pour la classe est le suivant:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X