Maison  >  Article  >  Java  >  Comment utiliser la fonction Reflection en Java pour les opérations de réflexion

Comment utiliser la fonction Reflection en Java pour les opérations de réflexion

PHPz
PHPzoriginal
2023-06-26 16:37:401152parcourir

La fonction Reflection en Java est une technologie de programmation avancée qui peut obtenir des informations de classe et les modifier dynamiquement au moment de l'exécution. Les fonctions de réflexion nous permettent d'utiliser ses objets ainsi que les propriétés et méthodes de la classe à laquelle ils appartiennent sans connaître les informations complètes sur la classe. Dans cet article, nous apprendrons comment effectuer des opérations de réflexion à l'aide de la fonction Reflection en Java.

1. Concepts de base du mécanisme de réflexion

Le mécanisme de réflexion fait référence à un mécanisme qui obtient dynamiquement les informations du fichier de classe (fichier .class) pendant le processus de programmation. Il permet d'exploiter ces informations de fichier de classe au moment de l'exécution, y compris la lecture des méthodes de classe, des propriétés, des constructeurs, l'obtention et l'appel de méthodes, etc.

En général, le mécanisme de réflexion est le langage de programmation Java qui détermine le type d'un objet au moment de l'exécution, nous permettant de vérifier la classe à laquelle appartient un objet au moment de l'exécution et d'analyser ses caractéristiques et son comportement.

Le principal avantage du mécanisme de réflexion est qu'il peut implémenter du code générique qui peut être appliqué à toutes les classes Java sans connaître les informations complètes sur la classe réelle. Cela permet aux programmeurs de créer, analyser et utiliser des objets, des propriétés et des méthodes dans les classes par réflexion.

2. Obtenir l'objet Class

La première étape de la réflexion consiste à obtenir l'objet Class de la classe, ce qui peut être réalisé des trois manières suivantes :

  1. Utilisez la méthode Class.forName() pour obtenir

Cela utilise le mécanisme de réflexion. La méthode la plus courante. Nous pouvons utiliser la méthode Class.forName() en réflexion pour obtenir l'objet Class de la classe. Cette méthode doit passer le nom complet d'une classe, par exemple :

Class clazz = Class.forName("java.lang.String");
  1. Utiliser directement le mot-clé class name.class pour obtenir

Nous pouvons également utiliser directement le mot-clé class name.class pour obtenir l'objet Class de la classe, par exemple :

Class clazz = String.class;
  1. Obtenez-le via la méthode getClass() de l'objet

Nous pouvons utiliser la méthode getClass() de l'objet pour obtenir l'objet Class de la classe à laquelle l'objet appartient, par exemple exemple :

String str = "Hello, World!";
Class clazz = str.getClass();

3. Obtenir les informations sur la classe

Obtenir la classe Les informations sont l'opération la plus basique en réflexion, qui nous permet d'obtenir les méthodes, propriétés, constructeurs et autres informations de la classe au moment de l'exécution, et d'appeler et de modifier il.

Nous pouvons utiliser le code suivant pour obtenir les informations de la classe :

  1. Obtenir tous les constructeurs de la classe
Constructor[] constructors = clazz.getDeclaredConstructors();
for (Constructor constructor : constructors) {
    System.out.println(constructor);
}
  1. Obtenir toutes les méthodes de la classe
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
    System.out.println(method);
}
  1. Obtenir tous les attributs de la classe
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
    System.out.println(field);
}

4. Classe d'opération Objets, méthodes et propriétés

Nous pouvons utiliser le mécanisme de réflexion pour utiliser les objets, méthodes et propriétés d'une classe. Voici des exemples d'utilisation de la réflexion pour faire fonctionner les méthodes et propriétés associées d'une classe :

  1. Création d'objets à l'aide de la réflexion

Utilisation de la réflexion pour créer dynamiquement des objets d'une classe, voici le code d'implémentation :

Class clazz = Class.forName("java.lang.String");
Constructor constructor = clazz.getDeclaredConstructor(String.class);
String str = (String) constructor.newInstance("Hello, World!");
  1. Utilisation de la réflexion pour appeler les méthodes d'une classe

Utilisez la réflexion pour appeler dynamiquement les méthodes d'une classe. Voici le code d'implémentation :

Class clazz = Class.forName("java.lang.String");
Method method = clazz.getDeclaredMethod("charAt", int.class);
char c = (char) method.invoke("Hello, World!", 1);
  1. Utilisez la réflexion pour lire et modifier les attributs d'une classe

Utilisez la réflexion pour lire et modifier dynamiquement. modifier les attributs d'une classe. Voici le code d'implémentation :

Class clazz = Class.forName("java.lang.String");
Field field = clazz.getDeclaredField("value");
field.setAccessible(true); //设置私有属性可读写
String str = "Hello, World!";
char[] chars = (char[]) field.get(str);
chars[0] = 'h';
System.out.println(str); //输出: hello, World!

Résumé

Cet article explique comment utiliser la fonction Reflection en Java pour les opérations de réflexion. Le mécanisme de réflexion est une technologie très importante dans la programmation Java. Il permet aux programmeurs d'obtenir et d'exploiter des informations et des propriétés de classe au moment de l'exécution, permettant ainsi aux programmeurs de créer, d'accéder et de modifier dynamiquement les objets, les méthodes et les propriétés d'une classe. Après avoir appris le mécanisme de réflexion, nous pouvons écrire des applications Java de manière plus flexible et écrire du code évolutif et polyvalent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn