Maison  >  Article  >  Java  >  Principes de base et méthodes d'appel de la réflexion Java

Principes de base et méthodes d'appel de la réflexion Java

王林
王林original
2023-12-23 09:01:071108parcourir

Principes de base et méthodes dappel de la réflexion Java

Principes de base et méthodes d'appel de la réflexion Java

Avant-propos :
La réflexion Java est une fonctionnalité importante du langage Java, qui permet aux programmes d'obtenir dynamiquement des informations sur la classe et d'exploiter les membres de la classe au moment de l'exécution. Grâce à la réflexion, nous pouvons créer dynamiquement des objets, appeler des méthodes, obtenir/définir des propriétés, etc. au moment de l'exécution, ce qui améliore considérablement la flexibilité et l'évolutivité du programme. Cet article présentera les principes de base de la réflexion Java et donnera des exemples de code spécifiques.

1. Principes de base de la réflexion
L'implémentation de la réflexion Java est basée sur la classe Class, qui est la classe principale de la réflexion Java. Chaque classe Java générera un objet Class correspondant après la compilation. Les informations de classe peuvent être obtenues via l'objet Class et les opérations de classe peuvent être effectuées via les informations de classe.

La réflexion Java comprend principalement les classes et interfaces de base suivantes :

  1. Classe Class : représente le type de classe, qui est le point d'entrée de la réflexion Java.
  2. Classe Field : représente les variables membres de la classe.
  3. Classe Method : représente la méthode membre de la classe.
  4. Classe Constructor : représente la méthode constructeur de la classe.

Le principe de base de la réflexion Java est le suivant : d'abord, obtenir l'objet Class correspondant via le nom complet de la classe ou la méthode getClass() de l'objet puis, via certaines méthodes de la classe Class, telles que ; getFields(), getMethods(), etc. Obtenez un champ, une méthode, un constructeur et d'autres objets ; enfin, effectuez des opérations spécifiques via ces objets, telles que l'obtention/définition de valeurs d'attribut, l'appel de méthodes, la création d'objets, etc.

2. Méthode d'appel de réflexion
2.1 Obtenir un objet Class
L'objet Class correspondant peut être obtenu via le nom complet de la classe ou la méthode getClass() de l'objet.

L'exemple de code est le suivant :

// 通过类的全限定名获取Class对象
Class<?> clazz1 = Class.forName("com.example.User");

// 通过对象的getClass()方法获取Class对象
User user = new User();
Class<?> clazz2 = user.getClass();

2.2 Obtention des valeurs d'attribut
La valeur d'attribut d'un objet peut être obtenue via la méthode get() de la classe Field.

L'exemple de code est le suivant :

// 获取public属性值
Field field = clazz.getDeclaredField("name");
String name = (String) field.get(user);

// 获取private属性值
Field privateField = clazz.getDeclaredField("age");
privateField.setAccessible(true); // 设置private属性的访问权限
int age = (int) privateField.get(user);

2.3 Définition des valeurs d'attribut
La valeur d'attribut d'un objet peut être définie via la méthode set() de la classe Field.

L'exemple de code est le suivant :

// 设置public属性值
Field field = clazz.getDeclaredField("name");
field.set(user, "Tom");

// 设置private属性值
Field privateField = clazz.getDeclaredField("age");
privateField.setAccessible(true); // 设置private属性的访问权限
privateField.set(user, 20);

2.4 Appel de méthodes
La méthode d'un objet peut être appelée via la méthode Invocation() de la classe Method.

L'exemple de code est le suivant :

// 调用无参方法
Method method1 = clazz.getDeclaredMethod("sayHello");
method1.invoke(user);

// 调用带参方法
Method method2 = clazz.getDeclaredMethod("sayHi", String.class);
method2.invoke(user, "Jack");

2.5 Création d'objets
Les objets peuvent être créés via la méthode newInstance() de la classe Constructor.

L'exemple de code est le suivant :

Constructor<?> constructor = clazz.getDeclaredConstructor(String.class, int.class);
User newUser = (User) constructor.newInstance("Lucy", 25);

Résumé :
La réflexion Java est une fonctionnalité puissante du langage Java, qui peut obtenir dynamiquement des informations sur la classe et faire fonctionner les membres de la classe au moment de l'exécution. Le principe de base de la réflexion est d'obtenir des informations sur la classe via la classe Class et d'effectuer des opérations spécifiques via Field, Method, Constructor et d'autres objets. Dans les applications réelles, nous pouvons utiliser le mécanisme de réflexion pour réaliser diverses exigences dynamiques et améliorer la flexibilité et l'évolutivité du programme.

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