Une analyse approfondie de trois méthodes de réflexion Java
Java Reflection : Explorer trois méthodes
Introduction :
Dans le développement Java, la réflexion est une fonctionnalité puissante qui nous permet d'obtenir dynamiquement des informations sur les classes et de les manipuler au moment de l'exécution. Grâce à la réflexion, nous pouvons réaliser de nombreuses fonctions puissantes, telles que générer des objets au moment de l'exécution, appeler des méthodes de classe, accéder et modifier les propriétés de classe, etc. Cet article présentera trois méthodes de réflexion courantes en Java et fournira des exemples de code spécifiques.
1. Obtention d'objets de classe
En Java, chaque classe sera compilée dans un fichier .class, qui contient les informations de métadonnées de la classe. Nous pouvons obtenir ces métadonnées via la classe Class pour implémenter des opérations de réflexion sur la classe.
Exemple de code :
// 方法一:通过类名获取Class对象 Class<?> cls1 = MyClass.class; // 方法二:通过实例对象获取Class对象 MyClass obj = new MyClass(); Class<?> cls2 = obj.getClass(); // 方法三:通过完整类名获取Class对象 String className = "com.example.MyClass"; try { Class<?> cls3 = Class.forName(className); } catch (ClassNotFoundException e) { e.printStackTrace(); }
2. Instancier des objets
Grâce à la réflexion, nous pouvons instancier dynamiquement un objet d'une classe au moment de l'exécution. Grâce à la méthode newInstance() de la classe Class, nous pouvons facilement implémenter cette fonction.
Exemple de code :
// 创建Class对象 Class<?> cls = MyClass.class; // 实例化对象 try { Object obj = cls.newInstance(); System.out.println(obj.getClass().getName()); } catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); }
3. Appel de méthodes
La réflexion peut également être utilisée pour appeler les méthodes d'une classe. Grâce à la méthode getMethod() de la classe Class, nous pouvons obtenir les méthodes de la classe et les appeler via la méthode Invocation().
Exemple de code :
// 创建Class对象 Class<?> cls = MyClass.class; try { // 获取方法 Method method = cls.getMethod("myMethod", String.class); // 创建实例对象 Object obj = cls.newInstance(); // 调用方法 method.invoke(obj, "Hello, Reflection!"); } catch (NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) { e.printStackTrace(); }
4. Accéder et modifier les attributs
La réflexion peut également être utilisée pour accéder et modifier les attributs d'une classe. Grâce aux méthodes getField() et getDeclaredField() de la classe Class, nous pouvons obtenir les attributs de la classe et accéder et modifier leurs valeurs via les méthodes set() et get().
Exemple de code :
// 创建Class对象 Class<?> cls = MyClass.class; try { // 获取属性 Field field = cls.getDeclaredField("myField"); // 创建实例对象 Object obj = cls.newInstance(); // 设置属性值 field.set(obj, "Reflection"); // 获取属性值 System.out.println(field.get(obj)); } catch (NoSuchFieldException | IllegalAccessException | InstantiationException e) { e.printStackTrace(); }
Conclusion :
Grâce au mécanisme de réflexion de Java, nous pouvons obtenir dynamiquement des informations sur les classes et les exploiter au moment de l'exécution, ce qui améliore considérablement la flexibilité et l'évolutivité du programme. Cependant, il convient de noter que vous devez être prudent lorsque vous utilisez la réflexion, car les opérations de réflexion réduiront les performances du programme et peuvent produire des effets secondaires incontrôlés. Par conséquent, la réflexion doit être utilisée avec prudence dans le développement réel et éviter toute utilisation excessive.
Matériaux de référence :
1. « Explication détaillée et pratique du mécanisme de réflexion Java » : https://blog.csdn.net/xiaoxiaoyu510/article/details/89621550
2 « Introduction de base au mécanisme de réflexion Java » : https : //www .runoob.com/w3cnote/java-reflection-intro.html
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

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

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

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

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La réflexion Java est un outil puissant qui vous permet d'accéder aux champs et méthodes privés d'une classe, révélant ainsi le fonctionnement interne du logiciel. Ceci est utile dans des domaines tels que l'ingénierie inverse, l'analyse de logiciels et le débogage. Pour utiliser la réflexion Java, vous devez d'abord importer le package java.lang.reflect. Ensuite, vous pouvez utiliser la méthode Class.forName() pour obtenir l'objet Class d'une classe. Une fois que vous disposez d’un objet Class, vous pouvez utiliser différentes méthodes pour accéder aux champs et méthodes de la classe. Par exemple, vous pouvez utiliser la méthode getDeclaredFields() pour obtenir tous les champs d'une classe, y compris les champs privés. Vous pouvez également utiliser la méthode getDeclaredMethods()

Méthode d'obtention : 1. Créez un exemple d'objet ; 2. Obtenez la valeur du champ via field.get(person), où person est l'exemple d'objet et field est l'objet Field, représentant un champ. 3. Définissez le champ via setAccessible(true) ) Dans l'état accessible, même les champs privés peuvent obtenir leurs valeurs ; 4. Parcourez le tableau de champs, obtenez le nom et la valeur correspondante de chaque champ et imprimez-le.

Le principe du mécanisme de réflexion Java est que lorsqu'un fichier de bytecode est chargé en mémoire, le jvm disséque le bytecode et crée un objet Class de l'objet. Le jvm stocke toutes les informations du fichier bytecode dans l'objet Class tant qu'il est obtenu. l'objet Class, vous pouvez utiliser l'objet pour définir les propriétés ou les méthodes de l'objet, etc. Le mécanisme de réflexion a pour fonction de connaître tous les attributs et méthodes de n'importe quelle classe dans l'état d'exécution. Pour n'importe quel objet, il peut appeler n'importe lequel de ses attributs et méthodes, obtenir dynamiquement des informations et appeler dynamiquement des méthodes d'objet.

Les étapes pour créer un objet via le mécanisme de réflexion Java sont les suivantes : Chargez la classe cible : Utilisez la méthode Class.forName(). Récupérez le constructeur : utilisez la méthode getDeclaredConstructor(). Créez un objet : utilisez la méthode newInstance() pour transmettre des paramètres.

Compréhension approfondie des principes et des applications du mécanisme de réflexion Java 1. Le concept et le principe du mécanisme de réflexion Le mécanisme de réflexion fait référence à la capacité d'obtenir dynamiquement des informations de classe, d'accéder et de faire fonctionner les membres de la classe (propriétés, méthodes, constructeurs, etc.) tout en le programme est en cours d'exécution. Grâce au mécanisme de réflexion, nous pouvons créer dynamiquement des objets, appeler des méthodes et accéder aux propriétés pendant l'exécution du programme, sans connaître les informations spécifiques de la classe au moment de la compilation. Le cœur du mécanisme de réflexion réside dans les classes et les interfaces du package java.lang.reflect. Parmi eux, la classe Class représente les octets d'une classe

Méthode d'obtention : 1. Créez une classe Person et obtenez l'objet Class de la classe par réflexion ; 2. Utilisez la méthode getDeclaredFields pour obtenir tous les champs de la classe 3. En parcourant le tableau de champs, définissez les champs dans un état accessible ; puis utilisez get La méthode récupère la valeur du champ et imprime le nom et la valeur du champ.

L'exception NoSuchFieldException en Java fait référence à l'exception levée lors de la tentative d'accès à un champ (Field) inexistant lors de la réflexion. En Java, la réflexion nous permet de manipuler des classes, des méthodes, des variables, etc. dans le programme via du code, rendant le programme plus flexible et évolutif. Cependant, lors de l'utilisation de la réflexion, si le champ accédé n'existe pas, une NoSuchFieldException sera levée. NoSuchFieldException

Les méthodes d'appel de réflexion Java sont : 1. Classe de classe ; 2. Classe de constructeur ; 3. Classe de méthode 4. Classe de champ 5. Classe ClassLoader ; Introduction détaillée : 1. Classe de classe, utilisée pour obtenir des informations sur la classe, y compris le nom de la classe, les variables et méthodes membres, etc. Vous pouvez créer une instance de la classe via la méthode « newInstance() » de la classe Class ; utilisé pour obtenir les types de paramètres du constructeur, les modificateurs, les types de retour et d'autres informations, etc.
