- La réflexion
- La classe objet fournit une méthode getClass()
- classe Class :
- permet d'accéder aux informations sur les classes.
il existe un objet Class pour toute classe utilisée. - méthodes :
- toString() = getName() + "class" ou "interface" selon le cas
- newInstance() produit une nouvelle instance du type de l'objet
- et surtout les méthodes permettant d'accéder aux caractéristiques des objets modélisés
- getName() retourne le nom (String) de la classe
- getSuperClass() renvoie des informations (de type Class) sur la super-classe de la classe
- getPackage()
- int getModifiers() de la classe
- getSuperclass()
- getInterfaces()
- getConstructors()
- getDeclaredFields() tous les attributs
- getFields() uniquement ceux public
- getMethods()
- méthode de classe :
- opérateur :
objet instanceof classe retourne true si l'objet est appartient à cette classe (directement ou par héritage)
Introspection d'un bean
Les IDEs (interface ...) permettent de manipuler aisément les objets et les classes : grace à l'introspection du langage Java, des "Explorers" visualise immédiatement les attributs, les méthodes ainsi que leur type, leur modifier d'accès et pour les méthodes leur signature. Qu'en est'il des caractéristiques des beans ?Source de InspecteurProphet.java
package prophet3;
import java.beans.*;
class InspecteurProphet{
public static void main(String args[]) {
Prophete prophete = new Prophete("Brian");
System.out.println ("Inspection de "
+ prophete.getClass().getName() +"\n");
try {
BeanInfo bi = Introspector.getBeanInfo (prophete.getClass());
System.out.println ("getBeanInfo ShortDescription : "
+ bi.getBeanDescriptor().getShortDescription() + "\n");
EventSetDescriptor[] esd = bi.getEventSetDescriptors();
System.out.println ("EventSetDescriptor : \n");
for (int i=0;i<esd.length;i++)
System.out.print (" " + esd[i].getName() + " ");
System.out.println ("\n");
PropertyDescriptor pd[] = bi.getPropertyDescriptors();
System.out.println ("PropertyDescriptor : \n");
for (int i=0;i<pd.length;i++)
System.out.print (" " + pd[i].getName() + " ");
System.out.println ("\n");
MethodDescriptor md[] = bi.getMethodDescriptors();
System.out.println ("MethodDescriptor : \n");
for (int i=0;i<md.length;i++)
System.out.print (" " + md[i].getName() + " ");
System.out.println ("\n");
} catch (IntrospectionException e) {
System.out.println ("impossible de trouver le BeanInfo de "
+ prophete.getClass().getName() + "\n"
+ e.getMessage());
}
}
}
|
Aucun commentaire:
Enregistrer un commentaire