Il n'y a pas de support linguistique pour faire ce que vous demandez.
Vous pouvez accéder de manière réfléchie aux membres d'un type à l'exécution en utilisant la réflexion (par exemple avec Class.getDeclaredFields()
pour obtenir un tableau de Field
), mais en fonction de ce que vous essayez de faire, cela peut ne pas être la meilleure solution.
Voir aussi
Questions liées
Exemple
Voici un exemple simple pour montrer seulement une partie de ce que la réflexion est capable de faire.
import java.lang.reflect.*;
public class DumpFields {
public static void main(String[] args) {
inspect(String.class);
}
static void inspect(Class klazz) {
Field[] fields = klazz.getDeclaredFields();
System.out.printf("%d champs:%n", fields.length);
for (Field field : fields) {
System.out.printf("%s %s %s%n",
Modifier.toString(field.getModifiers()),
field.getType().getSimpleName(),
field.getName()
);
}
}
}
L'extrait ci-dessus utilise la réflexion pour inspecter tous les champs déclarés de la classe String
; il produit la sortie suivante :
7 champs :
private final char[] value
private final int offset
private final int count
private int hash
private static final long serialVersionUID
private static final ObjectStreamField[] serialPersistentFields
public static final Comparator CASE_INSENSITIVE_ORDER
Java efficace, 2e édition, Élément 53 : Privilégier les interfaces à la réflexion
Il s'agit d'extraits du livre :
Étant donné un objet Class
, vous pouvez obtenir des instances Constructor
, Method
et Field
représentant les constructeurs, méthodes et champs de la classe. [Ils] vous permettent de manipuler leurs homologues sous-jacents de manière réfléchie. Ce pouvoir, cependant, a un prix :
- Vous perdez tous les avantages de la vérification à la compilation.
- Le code requis pour effectuer l'accès réfléchi est maladroit et verbeux.
- Les performances en souffrent.
En règle générale, les objets ne devraient pas être accédés de manière réfléchie dans des applications normales à l'exécution.
Il existe quelques applications sophistiquées qui nécessitent la réflexion. Des exemples incluent [...omis volontairement...] Si vous avez des doutes concernant le fait que votre application tombe dans une de ces catégories, elle ne le fait probablement pas.