Récupération et invocation dynamique des méthodes d'une classe [reflection]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 161 fois - Téléchargée 29 fois

Contenu du snippet

suite à une question, je propose le petit bout de code suivant qui doit être étendu et rendu robuste (gestion d'Exception et traitement des méthodes à params...)
la question était :
http://www.javafr.com/forum.aspx?Article=1412

Source / Exemple :


import java.lang.reflect.*;
public class Chat {

  public Chat() {
  }
  public void miaule(){System.out.println("maou");}
  public void bois(){System.out.println("lap...lap...");}
  public static void main(String[] args) throws Exception
  {
  Chat chat = new Chat();
  //Récupérer l'objet Class
  Class c = chat.getClass();
  //Récupérer les Ctors
  Constructor[] ctors =  c.getConstructors();
  for (int i=0; i<ctors.length; i++)
  System.out.println(ctors[i]);

  //Récupérer les méthodes...
  Method[] methodes = c.getDeclaredMethods();
  for (int i=0; i<methodes.length; i++)
  {
  System.out.println(methodes[i]);
  if(methodes[i].getParameterTypes().length==0)
  //... et les invoquer
  methodes[i].invoke(chat,null);
  }

  }
}

A voir également

Ajouter un commentaire

Commentaire

alexis779
Messages postés
13
Date d'inscription
dimanche 21 novembre 2004
Statut
Membre
Dernière intervention
15 octobre 2005
-
Il faut mettre un c majuscule à "class" dans la ligne :
class c = chat.getClass();
->
Class c = chat.getClass() ;
Commenter la réponse de alexis779

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.