J'ai du mal à comprendre ce que cette notion représente, lorsqu'on dit
que Java est un langage permettant la "réflexivité" (ou "reflection",
mais je crois que ce dernier terme est un anglicisme).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jc Sirot
gregg wrote:
Bonjour,
J'ai du mal à comprendre ce que cette notion représente, lorsqu'on dit que Java est un langage permettant la "réflexivité" (ou "reflection", mais je crois que ce dernier terme est un anglicisme).
Et puis, quelle est son utilité ?
Question vocabulaire, je crois que le terme consacré est "introspection".
En Java, il existe des classes pour représenter les classes elle-même, les méthodes de classes... (cf package java.lang.reflect ainsi que java.lang.Class) Bref, il est possible d'obtenir dynamiquement des informations sur la constitution d'une classe (ses constructeurs, ses méthodes et leurs paramètres...) : c'est ça l'introspection.
L'introspection a de multiples utilisations, l'exemple le plus évident est l'instanciation des objets dont tu ne connais que le nom. Tu peux aussi faire des choses beaucoup plus amusantes comme créer dynamiquement des classes qui implémentent plusieurs interfaces (java.lang.reflect.Proxy) ou accéder aux champs/méthodes déclarés private d'une classe (java.lang.reflect.AccessibleObject) --
Cordialement -- JC Sirot
gregg wrote:
Bonjour,
J'ai du mal à comprendre ce que cette notion représente, lorsqu'on dit
que Java est un langage permettant la "réflexivité" (ou "reflection",
mais je crois que ce dernier terme est un anglicisme).
Et puis, quelle est son utilité ?
Question vocabulaire, je crois que le terme consacré est "introspection".
En Java, il existe des classes pour représenter les classes elle-même,
les méthodes de classes... (cf package java.lang.reflect ainsi que
java.lang.Class) Bref, il est possible d'obtenir dynamiquement des
informations sur la constitution d'une classe (ses constructeurs, ses
méthodes et leurs paramètres...) : c'est ça l'introspection.
L'introspection a de multiples utilisations, l'exemple le plus évident
est l'instanciation des objets dont tu ne connais que le nom. Tu peux
aussi faire des choses beaucoup plus amusantes comme créer dynamiquement
des classes qui implémentent plusieurs interfaces
(java.lang.reflect.Proxy) ou accéder aux champs/méthodes déclarés
private d'une classe (java.lang.reflect.AccessibleObject)
--
J'ai du mal à comprendre ce que cette notion représente, lorsqu'on dit que Java est un langage permettant la "réflexivité" (ou "reflection", mais je crois que ce dernier terme est un anglicisme).
Et puis, quelle est son utilité ?
Question vocabulaire, je crois que le terme consacré est "introspection".
En Java, il existe des classes pour représenter les classes elle-même, les méthodes de classes... (cf package java.lang.reflect ainsi que java.lang.Class) Bref, il est possible d'obtenir dynamiquement des informations sur la constitution d'une classe (ses constructeurs, ses méthodes et leurs paramètres...) : c'est ça l'introspection.
L'introspection a de multiples utilisations, l'exemple le plus évident est l'instanciation des objets dont tu ne connais que le nom. Tu peux aussi faire des choses beaucoup plus amusantes comme créer dynamiquement des classes qui implémentent plusieurs interfaces (java.lang.reflect.Proxy) ou accéder aux champs/méthodes déclarés private d'une classe (java.lang.reflect.AccessibleObject) --
Cordialement -- JC Sirot
jerome moliere
Jc Sirot wrote:
gregg wrote:
Bonjour,
J'ai du mal à comprendre ce que cette notion représente, lorsqu'on dit que Java est un langage permettant la "réflexivité" (ou "reflection", mais je crois que ce dernier terme est un anglicisme).
Et puis, quelle est son utilité ?
Question vocabulaire, je crois que le terme consacré est "introspection".
En Java, il existe des classes pour représenter les classes elle-même, les méthodes de classes... (cf package java.lang.reflect ainsi que java.lang.Class) Bref, il est possible d'obtenir dynamiquement des informations sur la constitution d'une classe (ses constructeurs, ses méthodes et leurs paramètres...) : c'est ça l'introspection.
en effet la possibilite de decouvrir dynamiquement des informations sur
un objet par sa meta classe et les entites associees... ensuite la reflection en general consiste a utiliser ces informations pour faire qqch d'utile... typiquement invoquer un constructeur particulier ... jerome -- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Jc Sirot wrote:
gregg wrote:
Bonjour,
J'ai du mal à comprendre ce que cette notion représente, lorsqu'on dit
que Java est un langage permettant la "réflexivité" (ou "reflection",
mais je crois que ce dernier terme est un anglicisme).
Et puis, quelle est son utilité ?
Question vocabulaire, je crois que le terme consacré est "introspection".
En Java, il existe des classes pour représenter les classes elle-même,
les méthodes de classes... (cf package java.lang.reflect ainsi que
java.lang.Class) Bref, il est possible d'obtenir dynamiquement des
informations sur la constitution d'une classe (ses constructeurs, ses
méthodes et leurs paramètres...) : c'est ça l'introspection.
en effet la possibilite de decouvrir dynamiquement des informations sur
un objet par sa meta classe et les entites associees...
ensuite la reflection en general consiste a utiliser ces informations
pour faire qqch d'utile...
typiquement invoquer un constructeur particulier ...
jerome
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
J'ai du mal à comprendre ce que cette notion représente, lorsqu'on dit que Java est un langage permettant la "réflexivité" (ou "reflection", mais je crois que ce dernier terme est un anglicisme).
Et puis, quelle est son utilité ?
Question vocabulaire, je crois que le terme consacré est "introspection".
En Java, il existe des classes pour représenter les classes elle-même, les méthodes de classes... (cf package java.lang.reflect ainsi que java.lang.Class) Bref, il est possible d'obtenir dynamiquement des informations sur la constitution d'une classe (ses constructeurs, ses méthodes et leurs paramètres...) : c'est ça l'introspection.
en effet la possibilite de decouvrir dynamiquement des informations sur
un objet par sa meta classe et les entites associees... ensuite la reflection en general consiste a utiliser ces informations pour faire qqch d'utile... typiquement invoquer un constructeur particulier ... jerome -- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Bruno Tignac
Bonjour,
La reflexivité est un terme mathématique designant que pour un element a d'un ensemble E, la relation a R a est vraie.
La reflexion est l'action de representer un monde dans un autre ayant au moins les memes propriétés, l'objectif etant d'aller plus vite, de mieux connaitre le probleme. Un cas simple de reflexion peut etre le suivant :
Soit un probleme de geometrie. Pour le resoudre, on utiliser une methode "litterale" (demonstrative). Ce sera long mais faisable.
deuxieme point devue : je traduis l'enonce literal en equation, et je resouds le tout par de la geometrie analytique, c'est plus rapide, pour le meme resultat.
La reflexion a donc ete le fait que l'on ai traduit l'enonce literal (premier monde) dans un systeme analytique (deuxieme monde) plus riche.
L'utilité est donc l'optimisation d'une maniere generale.
L'introspection est la capacite qu'a un systeme de se connaitre lui meme (a rapprocher de la situation ou on reflechit a ce que l'on fait). Cela se traduit en Java par l'usage de this
L'utilisation de la reflexion dans Java passe par l'utilisation du package java.lang.reflect. Son utilité est donc l'optimisation, par forcement en terme de gain CPU/memoire mais en factorisation algorithmique, il permet de mettre en place un algorithme generique qui invoque des methodes qu'on lui indique sur des objets qu'on lui passe sans qu'aucun de ces objets n'aient d'interface commune.
La capacite a connaitre dynamiquement les informations d'un objet releveplus du cadre d'un IDE (pour le debugage).
Il y a un point que je ne connais dans ce que dit Jerome : ce sont les metaclasses en java et les entites associees. Peux-tu m'en dire plus ?
Bruno
jerome moliere wrote:
Jc Sirot wrote:
gregg wrote:
Bonjour,
J'ai du mal à comprendre ce que cette notion représente, lorsqu'on dit que Java est un langage permettant la "réflexivité" (ou "reflection", mais je crois que ce dernier terme est un anglicisme).
Et puis, quelle est son utilité ?
Question vocabulaire, je crois que le terme consacré est "introspection".
En Java, il existe des classes pour représenter les classes elle-même, les méthodes de classes... (cf package java.lang.reflect ainsi que java.lang.Class) Bref, il est possible d'obtenir dynamiquement des informations sur la constitution d'une classe (ses constructeurs, ses méthodes et leurs paramètres...) : c'est ça l'introspection.
en effet la possibilite de decouvrir dynamiquement des informations sur
un objet par sa meta classe et les entites associees... ensuite la reflection en general consiste a utiliser ces informations pour faire qqch d'utile... typiquement invoquer un constructeur particulier ... jerome
Bonjour,
La reflexivité est un terme mathématique designant que pour un element a
d'un ensemble E, la relation a R a est vraie.
La reflexion est l'action de representer un monde dans un autre ayant au
moins les memes propriétés, l'objectif etant d'aller plus vite, de mieux
connaitre le probleme. Un cas simple de reflexion peut etre le suivant :
Soit un probleme de geometrie. Pour le resoudre, on utiliser une methode
"litterale" (demonstrative). Ce sera long mais faisable.
deuxieme point devue : je traduis l'enonce literal en equation, et je
resouds le tout par de la geometrie analytique, c'est plus rapide, pour le
meme resultat.
La reflexion a donc ete le fait que l'on ai traduit l'enonce literal
(premier monde) dans un systeme analytique (deuxieme monde) plus riche.
L'utilité est donc l'optimisation d'une maniere generale.
L'introspection est la capacite qu'a un systeme de se connaitre lui meme (a
rapprocher de la situation ou on reflechit a ce que l'on fait).
Cela se traduit en Java par l'usage de this
L'utilisation de la reflexion dans Java passe par l'utilisation du package
java.lang.reflect. Son utilité est donc l'optimisation, par forcement en
terme de gain CPU/memoire mais en factorisation algorithmique, il permet de
mettre en place un algorithme generique qui invoque des methodes qu'on lui
indique sur des objets qu'on lui passe sans qu'aucun de ces objets n'aient
d'interface commune.
La capacite a connaitre dynamiquement les informations d'un objet releveplus
du cadre d'un IDE (pour le debugage).
Il y a un point que je ne connais dans ce que dit Jerome : ce sont les
metaclasses en java et les entites associees. Peux-tu m'en dire plus ?
Bruno
jerome moliere wrote:
Jc Sirot wrote:
gregg wrote:
Bonjour,
J'ai du mal à comprendre ce que cette notion représente, lorsqu'on dit
que Java est un langage permettant la "réflexivité" (ou "reflection",
mais je crois que ce dernier terme est un anglicisme).
Et puis, quelle est son utilité ?
Question vocabulaire, je crois que le terme consacré est "introspection".
En Java, il existe des classes pour représenter les classes elle-même,
les méthodes de classes... (cf package java.lang.reflect ainsi que
java.lang.Class) Bref, il est possible d'obtenir dynamiquement des
informations sur la constitution d'une classe (ses constructeurs, ses
méthodes et leurs paramètres...) : c'est ça l'introspection.
en effet la possibilite de decouvrir dynamiquement des informations sur
un objet par sa meta classe et les entites associees...
ensuite la reflection en general consiste a utiliser ces informations
pour faire qqch d'utile...
typiquement invoquer un constructeur particulier ...
jerome
La reflexivité est un terme mathématique designant que pour un element a d'un ensemble E, la relation a R a est vraie.
La reflexion est l'action de representer un monde dans un autre ayant au moins les memes propriétés, l'objectif etant d'aller plus vite, de mieux connaitre le probleme. Un cas simple de reflexion peut etre le suivant :
Soit un probleme de geometrie. Pour le resoudre, on utiliser une methode "litterale" (demonstrative). Ce sera long mais faisable.
deuxieme point devue : je traduis l'enonce literal en equation, et je resouds le tout par de la geometrie analytique, c'est plus rapide, pour le meme resultat.
La reflexion a donc ete le fait que l'on ai traduit l'enonce literal (premier monde) dans un systeme analytique (deuxieme monde) plus riche.
L'utilité est donc l'optimisation d'une maniere generale.
L'introspection est la capacite qu'a un systeme de se connaitre lui meme (a rapprocher de la situation ou on reflechit a ce que l'on fait). Cela se traduit en Java par l'usage de this
L'utilisation de la reflexion dans Java passe par l'utilisation du package java.lang.reflect. Son utilité est donc l'optimisation, par forcement en terme de gain CPU/memoire mais en factorisation algorithmique, il permet de mettre en place un algorithme generique qui invoque des methodes qu'on lui indique sur des objets qu'on lui passe sans qu'aucun de ces objets n'aient d'interface commune.
La capacite a connaitre dynamiquement les informations d'un objet releveplus du cadre d'un IDE (pour le debugage).
Il y a un point que je ne connais dans ce que dit Jerome : ce sont les metaclasses en java et les entites associees. Peux-tu m'en dire plus ?
Bruno
jerome moliere wrote:
Jc Sirot wrote:
gregg wrote:
Bonjour,
J'ai du mal à comprendre ce que cette notion représente, lorsqu'on dit que Java est un langage permettant la "réflexivité" (ou "reflection", mais je crois que ce dernier terme est un anglicisme).
Et puis, quelle est son utilité ?
Question vocabulaire, je crois que le terme consacré est "introspection".
En Java, il existe des classes pour représenter les classes elle-même, les méthodes de classes... (cf package java.lang.reflect ainsi que java.lang.Class) Bref, il est possible d'obtenir dynamiquement des informations sur la constitution d'une classe (ses constructeurs, ses méthodes et leurs paramètres...) : c'est ça l'introspection.
en effet la possibilite de decouvrir dynamiquement des informations sur
un objet par sa meta classe et les entites associees... ensuite la reflection en general consiste a utiliser ces informations pour faire qqch d'utile... typiquement invoquer un constructeur particulier ... jerome
jerome moliere
Bruno Tignac wrote: <skip la tres jolie et complete explication mathematique :) >
Il y a un point que je ne connais dans ce que dit Jerome : ce sont les metaclasses en java et les entites associees. Peux-tu m'en dire plus ? c'est le fait (terme un peu pompeux il est vrai) que via une instance de
la classe Class on accede a divers elements (Method,Constructor et autres) decrivant ce que peut faire l'objet lui même ou comment le construire... pas trop decu ? :)
Jerome
-- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Bruno Tignac wrote:
<skip la tres jolie et complete explication mathematique :) >
Il y a un point que je ne connais dans ce que dit Jerome : ce sont les
metaclasses en java et les entites associees. Peux-tu m'en dire plus ?
c'est le fait (terme un peu pompeux il est vrai) que via une instance de
la classe Class on accede a divers elements (Method,Constructor et
autres) decrivant ce que peut faire l'objet lui même ou comment le
construire...
pas trop decu ? :)
Jerome
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Bruno Tignac wrote: <skip la tres jolie et complete explication mathematique :) >
Il y a un point que je ne connais dans ce que dit Jerome : ce sont les metaclasses en java et les entites associees. Peux-tu m'en dire plus ? c'est le fait (terme un peu pompeux il est vrai) que via une instance de
la classe Class on accede a divers elements (Method,Constructor et autres) decrivant ce que peut faire l'objet lui même ou comment le construire... pas trop decu ? :)
Jerome
-- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Bruno Tignac
Salut,
Je m'interrogeais car la phrase etait la suivante : "en effet la possibilite de decouvrir dynamiquement des informations sur un objet par sa meta classe et les entites associees..."
qui semblait indiquer qu'un objet (instance d'une Class) avait egalement a sa disposition une meta classe
Or il fallait lire qu'un objet peut par introspection (XX.getClass()) acceder a sa classe qui elle meme permet d'acceder a la description de ses membres et methodes.
Je ne suis pas d'accord avec toi, le terme de meta classe n'a rien de pompeux, car il est (pour une fois) utilisee dans son bon sens. Meta-XXX designe en effet le fait que l'on manipule des proprietes du terme XXX : exemple : une meta classe permet de manipuler une Class. (or il s'avere qu'en java le meta classe de Class est Class, d'ou le fait qu'on puisse parler d'introspection).
Pour finir, je ne suis pas decu, car tres heureux de rencontrer quelqu'un qui manipule la reflexion.
Bruno
jerome moliere wrote:
Bruno Tignac wrote: <skip la tres jolie et complete explication mathematique :) >
Il y a un point que je ne connais dans ce que dit Jerome : ce sont les metaclasses en java et les entites associees. Peux-tu m'en dire plus ? c'est le fait (terme un peu pompeux il est vrai) que via une instance de
la classe Class on accede a divers elements (Method,Constructor et autres) decrivant ce que peut faire l'objet lui même ou comment le construire... pas trop decu ? :)
Jerome
Salut,
Je m'interrogeais car la phrase etait la suivante :
"en effet la possibilite de decouvrir dynamiquement des informations sur
un objet par sa meta classe et les entites associees..."
qui semblait indiquer qu'un objet (instance d'une Class) avait egalement a
sa disposition une meta classe
Or il fallait lire qu'un objet peut par introspection (XX.getClass())
acceder a sa classe qui elle meme permet d'acceder a la description de ses
membres et methodes.
Je ne suis pas d'accord avec toi, le terme de meta classe n'a rien de
pompeux, car il est (pour une fois) utilisee dans son bon sens. Meta-XXX
designe en effet le fait que l'on manipule des proprietes du terme XXX :
exemple : une meta classe permet de manipuler une Class. (or il s'avere
qu'en java le meta classe de Class est Class, d'ou le fait qu'on puisse
parler d'introspection).
Pour finir, je ne suis pas decu, car tres heureux de rencontrer quelqu'un
qui manipule la reflexion.
Bruno
jerome moliere wrote:
Bruno Tignac wrote:
<skip la tres jolie et complete explication mathematique :) >
Il y a un point que je ne connais dans ce que dit Jerome : ce sont les
metaclasses en java et les entites associees. Peux-tu m'en dire plus ?
c'est le fait (terme un peu pompeux il est vrai) que via une instance de
la classe Class on accede a divers elements (Method,Constructor et
autres) decrivant ce que peut faire l'objet lui même ou comment le
construire...
pas trop decu ? :)
Je m'interrogeais car la phrase etait la suivante : "en effet la possibilite de decouvrir dynamiquement des informations sur un objet par sa meta classe et les entites associees..."
qui semblait indiquer qu'un objet (instance d'une Class) avait egalement a sa disposition une meta classe
Or il fallait lire qu'un objet peut par introspection (XX.getClass()) acceder a sa classe qui elle meme permet d'acceder a la description de ses membres et methodes.
Je ne suis pas d'accord avec toi, le terme de meta classe n'a rien de pompeux, car il est (pour une fois) utilisee dans son bon sens. Meta-XXX designe en effet le fait que l'on manipule des proprietes du terme XXX : exemple : une meta classe permet de manipuler une Class. (or il s'avere qu'en java le meta classe de Class est Class, d'ou le fait qu'on puisse parler d'introspection).
Pour finir, je ne suis pas decu, car tres heureux de rencontrer quelqu'un qui manipule la reflexion.
Bruno
jerome moliere wrote:
Bruno Tignac wrote: <skip la tres jolie et complete explication mathematique :) >
Il y a un point que je ne connais dans ce que dit Jerome : ce sont les metaclasses en java et les entites associees. Peux-tu m'en dire plus ? c'est le fait (terme un peu pompeux il est vrai) que via une instance de
la classe Class on accede a divers elements (Method,Constructor et autres) decrivant ce que peut faire l'objet lui même ou comment le construire... pas trop decu ? :)