Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Nom de classe appelante [ Divers / Général ] (mimou01 )

vendredi 13 avril 2007 à 09:45:25 | Nom de classe appelante

mimou01

Salut,

Supposons que j'ai cet appel classe1.METH() , ya t'il un moyen pour reconneaitre au sein de la méthode méthode le nom de la classe qui a fait l'appel c'est a dire classe1.
Merci


vendredi 13 avril 2007 à 10:35:31 | Re : Nom de classe appelante

mimou01

Je m'excuse là je veux dire au sein de la méthode METH() pourrais je savoir le nom de la classe qui a fait l'appel c'est à dire classe1.

Mon problème est que j'ai plusieurs classes qui appellent la méthode statique METH() et que le traitement différe d'un classe appelante à une autre, donc si je connaitrais le nom de la classe qui a fait l'appel je n'aurais pas besoin de faire plusieurs implémentation de la méthode METH(), je différencirai le traitement selon la classe appelante.

C'est urgent

Merci


vendredi 13 avril 2007 à 10:38:51 | Re : Nom de classe appelante

Fifan

Membre Club
En général un tel besoin (savoir par qui on est appelé) dénote d'un pb de conception...
Sinon, tu peux essayer ce code là dans METH:
String callerClass = new Exception().getStackTrace()[1].getClassName().toString();
String callerMethod = new Exception().getStackTrace()[1].getMethodName().toString();

En espérant que cela t'aide

vendredi 13 avril 2007 à 10:49:51 | Re : Nom de classe appelante

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
tout à fait d'accord avec Fifan : si tu es obligé de savoir qui appelle la méthode pour faire un traitement, oublie la programmation objet ;)
Crée une dépendance entre une classe et toutes les instances de classe qui peuvent l'utiliser, cela va à l'encontre de la programmation objet !

Pourquoi ne passe-tu pas un objet à ta méthode METH qui ferait le traitement spécifique que tu as besoin ?


D'ailleurs, quel est l'intérêt d'avoir une méthode qui ferait un traitement particulier selon la classe appelante ? A moins d'avoir un petit traitement qui est spécifique, et ainsi eviter de la duplication de code, je n'en voit pas l'intérêt.

vendredi 13 avril 2007 à 10:53:00 | Re : Nom de classe appelante

mimou01

En fait, je dois mieux m'exprimer, j'ai trois niveaux de classes, une classe Ancestor de laquelle herite ma classe1, et dans laquelle est implémenté ma methode statique  METH(), et plusieurs classes qui en heritent classe1, classe2, classe3. 
Le traitement differe de classe1 à classe 2 a classe 3, je ne veux pas reimplementer ma methode METH() au sein de chacune de ces classes parce qu'il n'ya qu'un seul parametre qui change donc c'est inutile de le faire,
L'appel classe1.METH() ou classe2().METH() se fait dans une autre classe d'execution .
Ma question est donc est ce qu'il ya un moyen qui me permettra de reconnaitre la classe qui a fait l'appel (classe1 ou classe2 ou ........)

vendredi 13 avril 2007 à 11:01:31 | Re : Nom de classe appelante

super_toinou

Yop yop !! c est clair que y a un pb de conception la !! si ta méthode est statique c est qu elle fait la meme chose pour tout le monde !! Si c est pas le cas dans ce cas tu vire statique et vu que t hérite tu surcharge ta méthode METH comme ca par polymorphisme ca passera comme tu veux. Sinon question toute bete, si tu dois faire on va dire 3 traitements spécifiques suivant qui appelle la méthode, pourquoi tu fais pas tout betement 3 méthodes et celui qui appelle, qui sait ce qu il fait appelera la méthode qui l interesse !! ++ Toinou

vendredi 13 avril 2007 à 11:35:47 | Re : Nom de classe appelante

zieunoir

essaye ça :
dans ta methode

this

.getClass().getName();

vendredi 13 avril 2007 à 12:31:29 | Re : Nom de classe appelante

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
>> zieunoir : c'est la solution que j'avais proposé hier, mais qui ne marche pas pour une méthode statique.

100% d'accord avec super_toinou : le polymorphisme ou la redéfinition me semble être LA solution dans ce cas là. Aucune raison de mettre en static une méthode si son comportement est différent selon l'appelant !

Il faut absolument casser la dépendance entre classe dans la programmation objet, sinon on s'en sort plus !



vendredi 13 avril 2007 à 12:37:16 | Re : Nom de classe appelante

Ombitious_Developper

Salut:

Si tu fais MyClass.method () alors tu es sûr que:
cette méthode est statique
la classe appelante est la classe qui la classe de base qui contient cette méthode ou une classe fille (sans parler du surdéfinition).

________________________________________________________________________________
A.B. :  "Dieu nous donne des mains, mais il ne bâtit pas les ponts"


vendredi 13 avril 2007 à 14:18:05 | Re : Nom de classe appelante

Fifan

Membre Club
Tu peux aussi jetter un coup d'oeuil sur les design pattern état et strategy si tu rend ta méthode publique.
Mais je redis qu'une méthode (d'autant plus si elle est statique) n'a pas à savoir par qui elle est appelée. Essaies de revoir un peu ta conception et si tu veux de l'aide, il faut nous en dire en peu plus.



Cette discussion est classé dans : appel, classe, méthode, appelante, classe1


Répondre à ce message

Sujets en rapport avec ce message

appel de classe java [ par babymate ] Bonjour tout le monde.J'aimerai savoir si on peut appeler plusieurs classes dans une JSP .Si oui, comment on fait? Si non , tant pis :-( la vie c comm Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un Est ce possible? [ par VinZzZ ] Je me pose un question auquel j'espère quelqu'un aura une réponse, mais peut être que ce n'est pas possible en Java??On a crée une classe mère A et un Temps d'execution de la méthode transform (de la classe javax.xml.transform.Transformer) [ par sleep ] Bonjour,J'ai remarqué d'importantes différences dans le temps d'execution d'un de mes programmes entre 2 utilisations, et ce dans les meme conditions. Quelle classe et méthode utiliser pour lire un fichier ligne à ligne ? [ par niluje ] bonjour, Histoire de mettre une arc de plus à ma corde et inversement .. je fais un peu de java ..Bref ma question de la soirée est :Quelle classe uti Help JTable - Étudiante en détresse [ par EducJava ] Salut, J'ai vraiment besoin d'aide. Ca fait des jours que je tourne en rond. Je suis étudiante et dans un exercice que j'ai à faire, je dois implémen récupéré la classe et la méthode qui leve l'exception [ par OliV_25 ] bonjour a tousdonc voila mon problème c'est que je veux faire un systeme d'affichage de message d'erreur dans mon programme,ce systeme sera lancé a ch DataOutputStream d'une classe à l'autre??? [ par axi_axi_axi ] Bonjour, Dans ma première classe, je défini un DataOutputStream et je voudrai le conserver dans une seconde classe: voici le code utile. Classe1{DataO


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.