Reflection

Réflexivité.

Besoin

Découvrir et invoquer dynamiquement des interfaces d'objets.

Analyse

La réflexivité permet :

Ces opérations sont soumises à des accréditations de sécurité (pas d'accès aux membres privés par exemple).

Exemples

Un exemple d'utilisation de la réflexivité est :

Class objectClass = obj.<strong>getClass</strong>();<br> String propertyName = <span class="codeString">"counter"</span>;<br> String prop = Character.toUpperCase(propertyName.charAt(0)) + name.substring(1); <br> <br> String mname = <span class="codeString">"get"</span> + prop; <br> Class[] types = new Class[] {}; <br> <strong>Method</strong> method = objectClass.<strong>getMethod</strong>(mname, types); <span class="codeComment">// Getter</span> <br> <br> Object result = method.<strong>invoke</strong>(obj, new Object[0]); <br> int value = ((Integer)result).intValue() + 1; <span class="codeComment">// Incrémente</span> <br> <br> mname = <span class="codeString">"set"</span> + prop; <br> types = new Class[] { int.class }; <br> method = objectClass.<strong>getMethod</strong>(mname, types); <span class="codeComment"> // Setter</span> <br> <br> method.<strong>invoke</strong>(obj, new Object[] { new Integer(value) });

Des exemples d'utilisation de la réflexivité sont :