OVH Cloud OVH Cloud

Descendants

6 réponses
Avatar
André AURENGO
Bonsoir

Tout d'abord, une information :il y a quelques semaines, j'avais demandé
sur ce forum une aide pour activer l'option "Quitter" que Mac OSX ajoute
automatiquement dans la barre de menu, au dessous du nom de l'appli JAVA.
J'avais eu une réponse mais qui n'a pas marché. Je signale un bon
article, trouvé depuis, sur la manière de faire des applis JAVA qui
restent compatibles pour d'autres plate-formes, mais qui remplissent les
spécifs habituelles des applications sur Mac :
http://homepage.mac.com/svc/macosxjava.pdf

D'autre part, une question.
Quelqu'un sait-il comment trouver tous les descendants d'une classe
donnée ? J'ai une classe d'ouvreurs de fichiers et je voudrais trouver
toutes les classes dérivées pour filtrer les fichiers dans le dialogue
d'ouverture. Merci de votre aide.

Bien cordialement

6 réponses

Avatar
Benoît Chauvet
André AURENGO wrote:
Bonsoir
D'autre part, une question.
Quelqu'un sait-il comment trouver tous les descendants d'une classe
donnée ? J'ai une classe d'ouvreurs de fichiers et je voudrais trouver
toutes les classes dérivées pour filtrer les fichiers dans le dialogue
d'ouverture. Merci de votre aide.


C'est (à mon avis) impossible. Certainement pour des raisons de sécurité,
d'ailleurs, car un code exécutant des méthodes d'une classe dérivée sans la
connaitre pourrait très facilement être détourné de son but par une classe
malveillante (enfin, ca serait plutot le programme qui est malveillant, mais
bon.)

Il faut plutot que tu enregistre toutes tes classes dérivées dans un
gestionnaire, qui saura appeler la bonne classe. C'est certes un peu moins
souple, car à chaque nouvelle implémentation d'une classe, tu dois ajouter
la ligne de code d'enregistrement dans ton gestionnaire.

Si tu veux éviter de recompiler cette dernière à chaque fois, tu peux aussi
écrire la liste de tes classes dans un fichier de properties.

Bon code.

--
Orabîg

Avatar
André AURENGO
Benoît Chauvet a écrit:
André AURENGO wrote:

Bonsoir
D'autre part, une question.
Quelqu'un sait-il comment trouver tous les descendants d'une classe
donnée ? J'ai une classe d'ouvreurs de fichiers et je voudrais trouver
toutes les classes dérivées pour filtrer les fichiers dans le dialogue
d'ouverture. Merci de votre aide.



C'est (à mon avis) impossible. Certainement pour des raisons de sécurité,
d'ailleurs, car un code exécutant des méthodes d'une classe dérivée sans la
connaitre pourrait très facilement être détourné de son but par une classe
malveillante (enfin, ca serait plutot le programme qui est malveillant, mais
bon.)

Il faut plutot que tu enregistre toutes tes classes dérivées dans un
gestionnaire, qui saura appeler la bonne classe. C'est certes un peu moins
souple, car à chaque nouvelle implémentation d'une classe, tu dois ajouter
la ligne de code d'enregistrement dans ton gestionnaire.

Si tu veux éviter de recompiler cette dernière à chaque fois, tu peux aussi
écrire la liste de tes classes dans un fichier de properties.

Bon code.

--
Orabîg




OK, je vais faire comme tu dis avec le fichier de properties, mais c'est
dommage.
Merci beaucoup et bonne fin de WE


Avatar
jerome moliere
André AURENGO wrote:

Benoît Chauvet a écrit:

André AURENGO wrote:

Bonsoir
D'autre part, une question.
Quelqu'un sait-il comment trouver tous les descendants d'une classe
donnée ? J'ai une classe d'ouvreurs de fichiers et je voudrais trouver
toutes les classes dérivées pour filtrer les fichiers dans le dialogue
d'ouverture. Merci de votre aide.




C'est (à mon avis) impossible. Certainement pour des raisons de sécurité,
d'ailleurs, car un code exécutant des méthodes d'une classe dérivée
sans la
connaitre pourrait très facilement être détourné de son but par une
classe
malveillante (enfin, ca serait plutot le programme qui est
malveillant, mais
bon.)

Il faut plutot que tu enregistre toutes tes classes dérivées dans un
gestionnaire, qui saura appeler la bonne classe. C'est certes un peu
moins
souple, car à chaque nouvelle implémentation d'une classe, tu dois
ajouter
la ligne de code d'enregistrement dans ton gestionnaire.

Si tu veux éviter de recompiler cette dernière à chaque fois, tu peux
aussi
écrire la liste de tes classes dans un fichier de properties.

Bon code.

--
Orabîg




OK, je vais faire comme tu dis avec le fichier de properties, mais c'est
dommage.


dommage ou logique ?
crois tu que les gens de Sun puissent connaitre toutes les classes
filels de JFrame ?
je ne pense pas et je le souhaite pour eux :)
quand tu designes une classe, si tu fais en sorte de la rendre
extensible tu portes une reposnabilite (honorer ton contrat)
mais pas plus :)

Jerome
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean13—82212111941



Avatar
Benoît Chauvet
jerome moliere wrote:

OK, je vais faire comme tu dis avec le fichier de properties, mais
c'est dommage.


dommage ou logique ?
crois tu que les gens de Sun puissent connaitre toutes les classes
filels de JFrame ?
je ne pense pas et je le souhaite pour eux :)


Moi non plus :)

quand tu designes une classe, si tu fais en sorte de la rendre
extensible tu portes une reposnabilite (honorer ton contrat)
mais pas plus :)


Je pense que ce que cherchais André, c'était l'équivalent de la méthode
Class.getSuperclass(), mais dans l'autre sens (du genre Class[]
getDescentClasses()). On aurait effectivement pu envisager que la JVM puisse
tenir le compte de toutes les classes chargées en mémoire à un instant
donné, et soit donc capable de trouver cette info. Mais évidement, une
classe n'est généralement chargée en mémoire que lorsqu'elle est utilisée
pour la première fois, et cette méthode aurait donc renvoyé des résultats
complètement imprévisibles. (sans parler des problèmes de sécurité évoqués
plus haut).

Tiens, Jérome, puisque je t'ai sous la main, tu pourrais essayer de répondre
à mon post du 14/02 ? (et accessoirement, à mes mails ;)

--
Orabîg


Avatar
jerome moliere
Tiens, Jérome, puisque je t'ai sous la main, tu pourrais essayer de répondre
à mon post du 14/02 ? (et accessoirement, à mes mails ;)


pas mieux que nospam :(
c'est un truc de ouf ne t'y engages pas sans bien prevoir le coup car
c'est pas trivial :)
autrement faut que tu ruses et que tu remplaces tout le desktop par un
java desktop et là c'est jouable

jerome
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean13—82212111941

Avatar
Benoît Chauvet
pas mieux que nospam :(
c'est un truc de ouf ne t'y engages pas sans bien prevoir le coup car
c'est pas trivial :)
autrement faut que tu ruses et que tu remplaces tout le desktop par un
java desktop et là c'est jouable


Mouaip, de toute façon, ce que je voudrais, c'est que l'utilisateur continue
d'utiliser une autre application (non-java) comme si de rien n'était,
pendant que l'application Java "en tache de fond" fait des captures d'écran
, manipule la souris à la place de l'utilisateur de temps à autre (ça, ca
marche déjà), mais aussi, puisse avoir des indices sur ce que l'utilisateur
est en train de faire. Et malheureusement, sans connaitre la position de la
souris à tout moment, c'est grillé.

Tant pis, et merci à vous deux.

--
Orabîg