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
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 :
- Classe Class : représente le type de classe, qui est le point d'entrée de la réflexion Java.
- Classe Field : représente les variables membres de la classe.
- Classe Method : représente la méthode membre de la classe.
- 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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Dreamweaver CS6
Outils de développement Web visuel

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP