Typer un objet de type variable

Typer un objet de type variable - Java - Programmation

Marsh Posté le 16-06-2011 à 15:30:17    

Bonjour à tous,
 
 
J'ai une structure de classes très simple du type ClassA <--- ClassB <--- ClassC. J'aimerais pouvoir utiliser un objet de cette arborescence mais dont je ne connais pas précisément le type : il peut s'agir d'un ClassB ou ClassC (ClassA est abstraite). La seule chose que je sais, c'est qu'il est dans cette arborescence et hérite de ClassA. Pour savoir quel type d'objet je dois créer, je regarde la première ligne d'un fichier de configuration.
Cet objet est ensuite stocké en tant qu'attribut dans une "classe chapeau" pour être réutilisé dans d'autres classes. Il faut donc que je sache quel type je dois donner à l'objet dans la classe chapeau ce qui, si vous avez bien suivi, dépend de la première ligne de mon fichier de configuration.
 
Le problème est que je ne sais pas comment typer cet objet.
Je ne peux pas utiliser de polymorphisme (ClassA monObjet = new ClassB() par ex) car j'ai besoin d'avoir accès aux attributs de la classe enfant.
 
Auriez-vous une solution à me proposer ?
 
 
Merci d'avance pour votre aide !

Reply

Marsh Posté le 16-06-2011 à 15:30:17   

Reply

Marsh Posté le 16-06-2011 à 16:53:57    

Regarde du côté de la Reflection.  
 

Code :
  1. Class aClassB = ClassB.class;
  2. Class aClassC = ClassC.class;
  3. if(verif de la premiere ligne de ton fichier) {
  4.    ClassA aReflectedClassObject = aClassB.newInstance();
  5. } else {
  6.    ClassA aReflectedClassObject = aClassC.newInstance();
  7. }


 
Ensuite, dans ton code, quand tu devras avoir accès aux attributs et méthodes des classes enfants, tu pourras tester son type :  
 

Code :
  1. if(aReflectedClassObject instanceof ClassB) {
  2.    ((ClassB)aReflectedClassObject).ceQueTuVeuxDeLaClasseB();
  3. } else if(aReflectedClassObject instanceof ClassC) {
  4.    ((ClassC)aReflectedClassObject).ceQueTuVeuxDeLaClasseC();
  5. }


 
Enfin, quelque chose dans le style quoi.


Message édité par Jericho le 16-06-2011 à 16:59:18

---------------
All work and no play makes Jack a dull boy...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed