Les solutions que j'ai vues en ligne ont du sens; si vous connaissez le type de la variable, alors vous connaissez le type de sa valeur. Java fait de cette façon; cependant, si j'ai un système de classes héritées comme celui-ci ...

DynastyPQ (base class)
FirstPQ (inherited class)

Et créez les objets de cette manière ...

DynastyPQ pq = new FirstPQ();

Existe-t-il un moyen d'obtenir le type de FirstPQ afin que je puisse l'utiliser dans un casting afin que je puisse accéder aux méthodes exclusives de la classe? Peut-être quelque chose comme ça?

(typeof(pq's value)pq).exclusiveMethod()
3
Jacob Macallan 26 déc. 2015 à 02:25

2 réponses

Essayez la méthode getClass(). Cela renverra la classe d'exécution de l'objet particulier. http://www.tutorialspoint.com/java/lang/object_getclass.htm

1
Vishal Vijayan 26 déc. 2015 à 02:05

Il y a quelques options:

  1. Avec l'opérateur instanceof:

    • if (pq instanceof FirstPQ) {((FirstPQ)pq).exclusiveMethod();}
  2. Avec le { {X0}} instance méthode:

    • FirstPQ firstPQ; if(pq.getClass().isInstance(firstPQ)) { firstPQ = (FirstPQ)pq; }
      (Remarque: Pas encore testé. Confirmé. )
  3. Avec un modèle de visiteur:
0
Community 23 mai 2017 à 12:26