Trouver toutes les instances d'un type de class connu

Trouver toutes les instances d'un type de class connu - Java - Programmation

Marsh Posté le 08-01-2004 à 15:07:10    

Voila, j'ai des class d'un certain type qui ne sont pas instanciées directement par mon programme et j'aimerais pouvoir agir dessus.
 
Cependant, comme je ne connais pas leur nom, mais juste leur type, je cherche un moyen d'accéder à la liste des class instanciées en fonction de leur type.
 
Est-ce possible?

Reply

Marsh Posté le 08-01-2004 à 15:07:10   

Reply

Marsh Posté le 08-01-2004 à 15:13:28    

Question bête mais cette classe dont tu cherches à pister toutes les instances, c'est toi qui l'a écrite ??? Quand tu dis que tu cherches les instances d'un type donné, ce type fait référence à une interface que ces classes implémentent ???


Message édité par machinbidule1974 le 08-01-2004 à 15:13:36
Reply

Marsh Posté le 08-01-2004 à 15:16:16    

non, ce n'est pas moi qui l'ai écrite, c'est une classe de logger tout bête, mais j'ai besoin de rediriger son output pour pouvoir stocker ses messages.
 
Et le type ne fait par référence a l'interface mais bien à l'objet class.

Reply

Marsh Posté le 08-01-2004 à 15:26:49    

[:blueflag]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-01-2004 à 15:29:38    

Si c'est un logger de Log4J, la méthode getCurrentLoggers() de l'interface LoggerRepository te retourne une Enumération avec tous les loggers qui ont été instanciés...
 
Sinon donne nous un peu + de détails sur ce logger, la manière dont les classes sont instanciées (factory ?) ...


Message édité par machinbidule1974 le 08-01-2004 à 15:30:25
Reply

Marsh Posté le 08-01-2004 à 15:34:59    

Moi j'aimerai bien savoir comment faire ca pour n'importe quelle classe dans n'importe quel programme java. Quelqu'un sait si c'est possible ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-01-2004 à 15:35:07    

nope, ce n'est pas un logger de log4J, c'est le bête Logger de java.lang.object. Il est instancié par eclipse et donc je n'ai pas exactement la manière dont celui-ci est instancié.

Reply

Marsh Posté le 08-01-2004 à 15:37:30    

benou a écrit :

Moi j'aimerai bien savoir comment faire ca pour n'importe quelle classe dans n'importe quel programme java. Quelqu'un sait si c'est possible ?


 
En utilisant AspectJ, on peut (il me semble) introduire des portions de code en amont et aval de n'importe quelle méthode, de n'importe quelle classe et pister les appels de méthodes... En utilisant un système de la sorte, on pourrait référencer tous les appels aux constructeurs d'une classe donnée

Reply

Marsh Posté le 08-01-2004 à 15:38:00    

ok, mais en standard ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 08-01-2004 à 15:38:28    

Je donne ma langue au chat :D
 
Ca revient à référencer toutes les instances d'une classe donc si on n'a pas le contrôle sur l'appel du constructeur (comme avec une factory sur laquelle on a la main), ça semble mal barré :/


Message édité par machinbidule1974 le 08-01-2004 à 15:41:35
Reply

Marsh Posté le 08-01-2004 à 15:38:28   

Reply

Marsh Posté le 08-01-2004 à 16:23:01    

http://java.sun.com/j2se/1.4.2/doc [...] jvmpi.html
 

Citation :


JVMPI_EVENT_OBJECT_ALLOC
 
    Sent when an object is allocated,  
 
...
 
JVMPI_EVENT_OBJECT_FREE
 
    Sent when an object is freed.

Dans la VM c'est (il semble, d'après les discussions trouvées par google) impossible de le faire pour un type arbitraire sans modifier le constructeur par défaut de Object.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-01-2004 à 16:52:24    

gizmo a écrit :

nope, ce n'est pas un logger de log4J, c'est le bête Logger de java.lang.object.

si tu parles des loggers du jdk1.4, l'api est a peu pres la meme que celle de log4j
et si c'est un logger propre à eclipse, pq tu ne regardes pas dans le code d'eclipse ou dans d'autres plugins?
 
et pourquoi tu veux toutes les instances, si c'est pas indiscret? le principe d'un logger en general c'est que tu en instancies un pour logger les trucs qui t'interessent(tu definis ta "categorie" ) et la config utilisateur derriere fait une selection de ce qui interesse l'user pour l'imprimer dans le fichier ou en console etc (niveau et categorie)
en tous cas c'est comme ça que log4j marche..


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-01-2004 à 16:55:12    

pour récupérer les messages d'erreurs qu'il créer automatiquement en interne et pouvoir les rediriger où on veut. Pour regarder le code d'éclipse, c'est ce qu'on va finir par devoir faire si on ne trouve pas d'autre moyen, mais bon...

Reply

Marsh Posté le 08-01-2004 à 16:57:22    

gizmo a écrit :

pour récupérer les messages d'erreurs qu'il créer automatiquement en interne et pouvoir les rediriger où on veut.


euh dans ce cas tu configure ton logger correctement plutot que de bricoler ce que tu nous dis là..
avec log4j, tu changes d'appender. et tu peux en écrire un toi meme c'est relativement simple
 

gizmo a écrit :

Pour regarder le code d'éclipse, c'est ce qu'on va finir par devoir faire si on ne trouve pas d'autre moyen, mais bon...

euh ça me parait un peu moins con que de commencer à faire des bidouilles improbables moi..


Message édité par the real moins moins le 08-01-2004 à 17:13:10

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 08-01-2004 à 17:02:47    

the real moins moins a écrit :


euh ça me parait un peu moins con que de commencer à faire des bidouilles improbables moi..

Tu comprends rien à l'art gros boulet.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-01-2004 à 17:13:18    

nraynaud a écrit :

Tu comprends rien à l'art gros boulet.

[:nofret]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Sujets relatifs:

Leave a Replay

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