Extension dynamique et r´
eflexion
Extension dynamique et r´
eflexion
USTL http://www.lifl.fr/routier 1
Extension dynamique et r´
eflexion
Extension dynamique
Java offre la possibilit´
e d’avoir des programmes qui s´
etendent dynamiquement :
permet un programme Pde charger des classes qui n’existaient pas au moment de la
programmation/compilation de Pet de cr´
eer et manipuler des instances de ces
classes.
R´
eflexion
Java permet `
a un programme de manipuler et d’analyser dynamiquement les objets
du programme eux-mˆ
emes
introspection
USTL http://www.lifl.fr/routier 2
Extension dynamique et r´
eflexion
Sch´
ema objet m´
eta-circulaire
les classes sont des instances de Class et donc des objets
֒poss`
edent attributs : les attributs des instances, leurs m´
ethodes, etc.
֒poss`
edent m´
ethodes (on peut donc leur envoyer des messages)
cr´
eation d’instances,
connaˆ
ıtre la valeur de ses attributs
appeler des m´
ethodes
la classe Object est une classe et donc une instance de Class, elle peut donc
ˆ
etre manipul´
ee aussi
en quelque sorte (pas tout `
a fait en Java) :
class UneClasse {...}Class UneClasse = new Class(...);
USTL http://www.lifl.fr/routier 3
Extension dynamique et r´
eflexion
Extension dynamique
2 mani`
eres de charger (dynamiquement) une classe en m´
emoire :
Class.forName(String)
ClassLoader:loadClass(String) (sous-classes de)
puis cr´
eation dynamique d’instances
newInstance(...)
USTL http://www.lifl.fr/routier 4
Extension dynamique et r´
eflexion
Class:forName()
public static Class forName(String className) throws
ClassNotFoundException
Class:newInstance()
public Object newInstance() throws
InstantiationException, IllegalAccessException
USTL http://www.lifl.fr/routier 5
1 / 21 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !