39 votes

Java garantit-il que Object.getClass () == Object.getClass ()?

Je veux vraiment dire égalité d'identité ici.

Par exemple, ce qui suit sera-t-il toujours imprimé vrai ?

 System.out.println("foo".getClass() == "fum".getClass());
 

Merci d'avance,

~ Mack

42voto

Péter Török Points 72981

Oui, la classe des jetons sont uniques (pour tout chargeur de classe, qui est).

I. e. vous obtiendrez toujours une référence au même objet physique dans le même chargeur de classe royaume. Cependant, un autre chargeur de classe charger une autre classe jeton, en conjonction avec le fait que la même définition de la classe est réputé différents lorsqu'ils sont chargés par deux chargeurs de classes distinctes.

Voir cette réponse de la mine pour une démonstration de ce.

15voto

McDowell Points 62645

Pour deux instances de la classe X ,

 x1.getClass() == x2.getClass()
 

seulement si

 x1.getClass().getClassLoader() == x2.getClass().getClassLoader()
 

Remarque: Class.getClassLoader() peut renvoyer null, ce qui implique le ClassLoader d’amorçage.

8voto

Bozho Points 273663

Oui.

L'objet Classe renvoyé est l'objet qui est verrouillé par les méthodes synchronisées statiques de la classe représentée.

S'il était possible de renvoyer plusieurs instances, alors

 public static synchronized void doSomething() {..}
 

ne serait pas thread-safe.

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