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

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

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.