609 votes

Comment déterminer la classe d'un objet (en Java)?

Si la classe B et la classe C étendent la classe A et que j'ai un objet de type B ou C, comment puis-je déterminer quelle instance instancie?

904voto

IAdapter Points 15876
if (obj instanceof C) {
//your code
}

440voto

Bill the Lizard Points 147311

Utilisez Object.getClass () . Il renvoie le type d'exécution de l'objet.

36voto

Johannes Weiß Points 19013

Vous pouvez utiliser:

 Object instance = new SomeClass();
instance.getClass().getName(); //will return the name (as String) (== "SomeClass")
instance.getClass(); //will return the SomeClass' Class object
 

HTH. Mais je pense que la plupart du temps ce n'est pas une bonne pratique d'utiliser ça pour contrôler le flux ou quelque chose de similaire ...

22voto

Yuval Adam Points 59423

Toute utilisation de l'une des méthodes suggérées est considérée comme une odeur de code qui est basée sur un mauvais design OO.

Si votre conception est bonne, vous ne devriez pas avoir besoin d'utiliser getClass() ou instanceof .

N'importe laquelle des méthodes suggérées fera l'affaire, mais juste quelque chose à garder à l'esprit, du point de vue du design.

13voto

Andreas Petersson Points 8096

Il y a aussi une `` méthode sur le " " Class. Si vous obtenez la classe d’un objet via vous pouvez voir si votre objet est une instance de la même classe que via

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