Java class en parametre
Résolu
bilbokey
Messages postés
126
Statut
Membre
-
FabriceF -
FabriceF -
Bonjour,
J' ai une Interface java "Animaux" implémenté par plusieurs classes "DefaultAnnimal" et "Poisson rouge" par exemple. Et dans une autre classe java, j'ai une chaine de caractère. Si c'est "Poisson rouge", j'aimerais avoir accès juste aux méthode de la classe "Poisson rouge" et sinon, aux méthode de "DefaultAnnimal". Cependant je ne sais pas comment faire. Si vous avez des idée, merci de me les faire partager.
Merci de votre attention.
J' ai une Interface java "Animaux" implémenté par plusieurs classes "DefaultAnnimal" et "Poisson rouge" par exemple. Et dans une autre classe java, j'ai une chaine de caractère. Si c'est "Poisson rouge", j'aimerais avoir accès juste aux méthode de la classe "Poisson rouge" et sinon, aux méthode de "DefaultAnnimal". Cependant je ne sais pas comment faire. Si vous avez des idée, merci de me les faire partager.
Merci de votre attention.
A voir également:
- Java class en parametre
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Remettre parametre usine pc - Guide
- Parametre dns - Guide
- Eclipse java - Télécharger - Langages
7 réponses
oui mon appli est réservé aux développeurs. Le principe est de pouvoir faceilement ajouter des plugins.
Alors si sa interesse quelqu'un j'ai trouvé en utilisant les classes Method et Class (pour recuperer la clsse a partir de la méthode) :
Et il exécute donc la méthode dont le nom NomDeLaMethode était contenu dans une chaine de caractères, et la classe NomDeLaClasse également.
Merci quand même d'avoir essayer de m'aider Hell_Keeper et FabriceF.
Merci du temps que vous m'avez accorder.
J'ai manqué d'un peu de clareté dans mon explication. J'espere que vous avez mieu compris avec cette dernière explication.
Alors si sa interesse quelqu'un j'ai trouvé en utilisant les classes Method et Class (pour recuperer la clsse a partir de la méthode) :
Class c= Class.forName(NomDeLaClasse);
Class[] parameter ={TypeParametreDeMaMethode1.class,TypeParametreDeMaMethode2.class...};
Method m=c.getMethode(NomDeLaMethode,parameter);
Object ob={MonParam1,MonParam2...}
m.invoke(c.newInstance(),ob);
Et il exécute donc la méthode dont le nom NomDeLaMethode était contenu dans une chaine de caractères, et la classe NomDeLaClasse également.
Merci quand même d'avoir essayer de m'aider Hell_Keeper et FabriceF.
Merci du temps que vous m'avez accorder.
J'ai manqué d'un peu de clareté dans mon explication. J'espere que vous avez mieu compris avec cette dernière explication.
Salut, utilise le polymorphisme ;) ...
par exemple dans la classe qui contient la chaine ajoute un attribut
private Animal toto=null;
apres il suffit de tester ta chaine :
if (chaine.equals("PoissonRouge")){
toto=new PoissonRouge(...);
}
Je pense que tu veux faire qqch dans ce genre là. Toutes les méthodes de ta classe PoissonRouge seront utilisées (je parle des méthodes redéfinies [Si ta classe PoissonRouge hérite d'une autre classe implémentant Animal])
par exemple dans la classe qui contient la chaine ajoute un attribut
private Animal toto=null;
apres il suffit de tester ta chaine :
if (chaine.equals("PoissonRouge")){
toto=new PoissonRouge(...);
}
Je pense que tu veux faire qqch dans ce genre là. Toutes les méthodes de ta classe PoissonRouge seront utilisées (je parle des méthodes redéfinies [Si ta classe PoissonRouge hérite d'une autre classe implémentant Animal])
ok merci, je garde cela dans un coin de ma tête, mais en fait mon principal problème est que la méthode poisson rouge n'existe pas.
En fait l'utilisateur qui veut faire fonctionner mon appli, implémente une méthode "PoissonRouge" et après moi j'ai juste cette chaine en paramètre du coup je voudrais faire un new LaChaineDeCaractereRepresentantLeNomDeLaMethode()...
Je sais pas si je suis assez clair
En fait l'utilisateur qui veut faire fonctionner mon appli, implémente une méthode "PoissonRouge" et après moi j'ai juste cette chaine en paramètre du coup je voudrais faire un new LaChaineDeCaractereRepresentantLeNomDeLaMethode()...
Je sais pas si je suis assez clair
En fait je cherche comment faire pour qu'une variable contienne le nom d'une méthode plutôt.... et pouvoir exécuter cette méthode...
Merci de votre aide
Merci de votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je pense comprendre ce que tu veux dire, mais je ne vois pas l'intérêt. Ton application est donc réservé au développeur (tout le monde ne sais aps écrire du code)? Car ce n'est pas une méthode PoissonRouge mais un constructeur et si tu as écrit tes classes, ta classe PoissonRouge possède au minimum ce constructeur (que tu l'as écrit ou non).
Bonjour j'ai pas trop compris ce que t'as écrit mais voilà je te propose d'écrire ta méthode dans l'autre class d'écrire ceci:
Dans ce cas il faut que la méthode getTaMethode() soit une méthode qui renvoie un String elle peux ne pas être une méthode abstraite de ton Interface Animal.
public String chaine(Animal animal){
if(Animal instanceof DefaultaAnimal){
DefaultAnimal defaultAnimal=(DefaultAnimal)animal;
return defaultAnimal.getTaMethode();
}
if(Animal instanceof PoissonRouge){
PoissonRouge poissonRouge=(PoissonRouge)animal;
return poissonRouge.getTaMethode();
}
return null;
}
Dans ce cas il faut que la méthode getTaMethode() soit une méthode qui renvoie un String elle peux ne pas être une méthode abstraite de ton Interface Animal.