[Reflection] Recuperer la classe fille directe effective d'une classe mere abstr
cs_loloof64
Messages postés342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention 6 novembre 2012
-
1 févr. 2010 à 21:12
cs_loloof64
Messages postés342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention 6 novembre 2012
-
3 févr. 2010 à 10:31
Salut à tous
Je me doute que ma question puisse être difficile à résoudre, mais je la pose quand même, on ne sait jamais. (Les recherches sur le forum avec reflection n'ont rien donné de satisfaisant, bien sûr). Sachez tout de même que même s'il n'y aurait pas de réponse satisfaisante, j'ai déjà implémenter une solution pour résoudre le problème. Mais le but du topic est justement d'améliorer le code actuellement utilisé.
Le code actuel
---------------------------------
Soit une classe Piece abstraite, elle admet pour filles Pion, Cavalier, Fou ... (Je suppose déjà que vous reconnaissez le type de jeu implémenté ) toutes concrètes.
La Piece abstraite definit actuellement une TEMPLATE METHOD et possede un tableau de Piece
protected Piece[][] plateau;
private boolean peutSeDeplacerDe(int grandXCase1, int grandYCase1,int grandXCase2, int grandYCase2){
if(!this.pieceContenueDansCaseDeDepartEstDeClasseCourante(grandXCase1, grandYCase1)) return false;
//autres conditions fausses à traiter => PEU D'IMPORTANCE A CE STADE DU DEVELOPPEMENT
return true;
}
protected abstract boolean pieceContenueDansCaseDepartEstDeClasseCourante(int grandXCase1, int grandYCase1); // La methode integree dans la template e à redefinir par les filles
Toutes les classes filles auront du code qui ressembleront à celui de Pion
Ce que je veux faire
----------------------------------------------
Utiliser la reflection JAVA pour eviter de creer un PATTERN TEMPLATE METHODE juste pour créer l'artifice que j'ai fait => Le test du type réelle de l'instance de la Piece se fait dans la methode peutSeDeplaceDeCase1ACase2 de la classe abstraite Piece
Pour finir
-----------------------------------
Je vous avais bien dit que cette question risquait d'être tirée par les cheveux !!!
Mais je serais tout de même ravi et reconnaissant si quelqu'un parvenait à m'aider à améliorer ainsi l'organisation de mon code
Salut
Loloof64 : A défaut de progresser en compétences, je voudrais au moins éssayer de le faire dans la qualité du code.
cs_loloof64
Messages postés342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention 6 novembre 2012 3 févr. 2010 à 10:31
Je poste juste ce message pour vous signaler un petit problème, mes sections de code du message précédent ont été troquées
-> il s'agit bien de la méthode de signature protected boolean pieceContenueDansCaseDepartEstDeClasseCourante(int grandXCase1, int grandYCase1); dans la 1ere section
-> le code tronqué dans la 2e section est
return this.plateau[grandXCase1][grandYCase1] instanceof Pion
(et pour une classe <Y> heritant de Piece, ce sera
return this.plateau[grandXCase1][grandYCase1] instanceof <Y>