package fr.imag.reflect ; import java.util.* ; import java.lang.reflect.* ; /** * Classe utilitaire completant les fonctionnalites de la classe java.lang.Class. **/ public class Class { /** * Ensemble des classes référencées par une classe donnée. * Cet ensemble contient notemment la superclasse, les classes * utilisées comme types des attributs, etc. Seules les dépendences * directes sont considérées ici. Les dépendances vers les classes * de bases liées au langage java comme java.lang.String ne sont * pas prise en compte (sont exclues les classes du paquetage java.lang * ainsi que les types de base comme int, float, etc.). * Les dépendences reflexives sont ignorées, autrement dit une classe * ne fait partie des classes retournées par cette méthode. * Seules des classes de premier niveaux sont retournées, jamais des * classes internes. * @param c la classe de départ. * @return les classes référencées par la classe c. **/ public static Set/*!*/ getReferencedClasses(java.lang.Class/*!*/ c) { // A COMPLETER // Utiliser le paquetage java.lang.reflect pour calculer les classes // référencées en suivant l'ensemble des différentes relations disponibles. // Par exemple une classe C dépend d'une autre X, si C contient une méthode // dont l'un des paramètres est de type X. etc. return new HashSet() ; } /** * Retourne, pour une classe donnée, le nom du paquetage la contenant. * @param c la classe de depart. * @return le nom du paquetage contenant la classe c. */ public static String/*!*/ getPackage(java.lang.Class/*!*/ c) { // A COMPLETER return "" ; } /** * Ensemble des noms des paquetages référencés par une classe. * Le paquetage java.lang est ignoré. * @param c la classe de départ * @return l'ensemble des noms de paquetages que c réference */ public static Set/*!*/ getReferencedPackages(java.lang.Class/*!*/ c) { // A COMPLETER // Utiliser les methodes getReferencedClasses et getPackage return new HashSet() ; } }