Java class en parametre

Résolu
bilbokey Messages postés 126 Statut Membre -  
 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.


A voir également:

7 réponses

bilbokey Messages postés 126 Statut Membre 11
 
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) :
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.
1
Hell_Keeper Messages postés 144 Statut Membre 36
 
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])
0
bilbokey Messages postés 126 Statut Membre 11
 
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
0
bilbokey Messages postés 126 Statut Membre 11
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Hell_Keeper Messages postés 144 Statut Membre 36
 
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).
0
FabriceF
 
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:

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.
0
FabriceF
 
Oui mais dans ce cas ton message n'était pas explicite.
-1