Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1725 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  reflexion à l'envers...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

reflexion à l'envers...

n°1665923
naeco
Buddy Rich Big Band
Posté le 04-01-2008 à 16:32:43  profilanswer
 

Bonjour,
Quelqu'un saurait'il comment je peux savoir dynamiquement combien, et quels sont les noms des class qui instancie une interface ou qui étend une classe ?
 
Le but : J'ai une classe C qui à un nombre d'enfant que je connais pas (car on pourra en rajouter par la suite), et je veux en instancier un des enfants au hasard lors de l'exécution de mon programme. Je voudrais pouvoir ne pas avoir à modifier mon "proxy" qui gère cette instanciation quand on ajoutera un nouvel enfant à la classe C.
 
La réflexion d'ordinaire, c'est plutôt le contraire : j'ai un objet, je veux savoir quel sont ses parents... moi je veux les enfants...
 
Je vous remercie de votre aide !

mood
Publicité
Posté le 04-01-2008 à 16:32:43  profilanswer
 

n°1666424
naeco
Buddy Rich Big Band
Posté le 05-01-2008 à 16:11:28  profilanswer
 

Quel succès ! personne à une petite idée ?

n°1666781
charly007
Posté le 06-01-2008 à 16:20:42  profilanswer
 

Naïvement je dirais que tu peux t'en sortir en parcourant l'ensemble des classes possibles et en testant si elles implémentent une interface ou étendent la classe en question.

n°1666828
sebi
Posté le 06-01-2008 à 18:08:47  profilanswer
 

Eclipse permets de faire ca avec son hierarchy view, doit y'avoir moyen de voir de quelle manière ils ont implementé ca.  
 
edit : http://www.javaworld.com/javaworld [...] ip113.html  
ca peut aider peut etre


Message édité par sebi le 06-01-2008 à 18:18:41

---------------
A religious war is like children fighting over who has the strongest imaginary friend.
n°1668935
naeco
Buddy Rich Big Band
Posté le 10-01-2008 à 14:21:02  profilanswer
 

Merci

n°1680624
verdy_p
Posté le 01-02-2008 à 17:16:22  profilanswer
 

JVMDI pour scruter le contenu de la VM. Sinon créer un classloader qui va pister les utilisations d'une classe donnée (attention à transmettre les infos de sécurité dans ce cas, le classloader agira comme un proxy mais isolera les références).
 
On peut bidouiller ça en instantiant soi-même la VM avec un classpath modifié (ce que fait Eclipse pour savoir "ce qui se passe" dans le moteur, au moment où on clique sur Run ou Debug; pour la "Hierarchy View", il utilise son propre compilateur et construit un arbre de métadonnées à partir des infos qu'il a obtenues, à condition de le laisser gérer lui-même le projet ANT, mais ce sera difficile et peu pratique de réécrire ça opur l'intégrer dans une appli).
 
Donc la solution du Classloader à soi me parait la plus simple.

n°1681135
BifaceMcLe​OD
The HighGlandeur
Posté le 03-02-2008 à 19:32:11  profilanswer
 

Le problème, c'est que c'est totalement contraire à un élément de base de  l'objet : on ne connaît pas la liste des sous-classes d'une classe parce qu'on souhaite s'abstraire des différences entre elles, et parce que d'autres peuvent apparaître dans le futur.
 
Donc à mon avis, le plus simple, si on souhaite connaître simplement les sous-classes d'une classe, il faut que chacune d'entre elle s'abonne auprès de la classe mère lorsqu'elle est chargée ou lorsqu'une instance est créée (avec un pattern Listener comme on le trouve pour la gestion d'événéments dans Swing).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  reflexion à l'envers...

 

Sujets relatifs
Un convertisseur Decimal->Hexa "a l'envers"Lire un fichier a l'envers
[direct3D 9] Reflexion d'un cube sur une surface plane ?reflexion sur conception site web educatif
[Ksh] inverser un fichier pour le lire à l'enverscomment lire à l'envers un clip qui contient des actions 'Stop'
probleme interresant qui porte a reflexionplobeme de "réflexion" pour la structure d'une base de données
une réflexion bien féminine... mais charmante !mécanisme réflexion
Plus de sujets relatifs à : reflexion à l'envers...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR