/*
* Lorsque votre JVM interprète votre programme, elle crée automatiquement un objet Class pour chaque classe chargée.
* Avec un tel objet, vous pouvez connaître absolument tout sur votre classe.
* L'objet Class utilise des sous-objets tels que Method, Field et Constructor qui permettent de travailler avec vos différents objets ainsi qu'avec ceux présents dans Java.
* Grâce à cet objet, vous pouvez créer des instances de vos classes Java sans utiliser new.
*/
public static void main(String[] args) {
// Récupérer un object Class
Class c = String.class;
// Class c2 = new String().getClass();
/*
* Connaître la superclasse d'une classe.
*/
System.out.println("La superclasse de la classe " + String.class.getName() + " est : " + String.class.getSuperclass());
/*
* Connaître les interfaces d'une classe.
*/
Class[] faces = c.getInterfaces();
// Pour voir le nombre d'interfaces
System.out.println("Il y a " + faces.length + " interfaces implémentées");
// On parcourt le tableau d'interfaces
for(int i = 0; i < faces.length; i++) {
System.out.println(faces[i]);
}
/*
* Connaître les méthodes d'une classe avec les paramètres.
*/
Method[] m = c.getMethods();
// Pour voir le nombre de méthodes
System.out.println("Il y a " + m.length + " méthodes dans cette classe");
//On parcourt le tableau de méthodes et on récupère les paramètres.
for(int i = 0; i < m.length; i++) {
System.out.println(m[i]);
Class[] p = m[i].getParameterTypes();
for(int j = 0; j < p.length; j++) {
System.out.println(p[j].getName());
}
System.out.println("----------------------------------\n");
}
/*
* Connaître les propriétées d'une classe.
*/
Field[] m2 = c.getDeclaredFields();
System.out.println("Il y a " + m2.length + " champs dans cette classe");
//On parcourt le tableau de méthodes
for(int i = 0; i < m2.length; i++) {
System.out.println(m2[i].getName());
}
/*
* Connaître les constructeurs d'une classe.
*/
Constructor[] construc = c.getConstructors();
System.out.println("Il y a " + construc.length + " constructeurs dans cette classe");
//On parcourt le tableau des constructeurs
for(int i = 0; i < construc.length; i++){
System.out.println(construc[i].getName());
Class[] param = construc[i].getParameterTypes();
for(int j = 0; j < param.length; j++) {
System.out.println(param[j]);
}
System.out.println("-----------------------------\n");
}
}