Le mécanisme de réflexion Java est qu'à l'état d'exécution, pour n'importe quelle classe, toutes les propriétés et méthodes de cette classe peuvent être obtenues, et pour n'importe quel objet, n'importe laquelle de ses propriétés et méthodes peut être appelée.
Cette fonction d'obtention dynamique d'informations et d'appel dynamique de méthodes objet au moment de l'exécution est appelée mécanisme de réflexion Java. (Apprentissage recommandé : Cours Java )
Les classes de classe avec les bibliothèques de classes Java.lang.reflet prennent en charge le concept de classe Constructeur (chaque classe implémente l'interface Member). Les objets de ces types sont créés par la JVM au moment de l'exécution pour représenter les membres correspondants de classes inconnues. De cette façon, vous pouvez utiliser le Constructeur pour créer de nouveaux objets, utiliser les méthodes get() et set() pour lire et modifier les champs associés à l'objet Field, et utiliser la méthode Invocation() pour appeler des méthodes. associé à l’objet Méthode. De plus, vous pouvez également appeler des méthodes pratiques telles que getFields() getMethods() et getConstructors() pour renvoyer un tableau d'objets représentant des champs, des méthodes et des constructeurs. De cette façon, les informations sur l'objet anonyme peuvent être complètement déterminées au moment de l'exécution, sans rien savoir au moment de la compilation.Obtenir des informations de classe via le mécanisme de réflexion
Créer des objets via le mécanisme de réflexion Avant de créer l'objet, vous devez obtenir l'objet constructeur de l'objet et créer l'objet correspondant. classe via l’objet constructeur. Le code suivant crée une instance d'objet sans participation ni paramètres pendant l'exécution. Étant donné que les méthodes getConstructor() et newInstance() génèrent de nombreuses exceptions (vous pouvez les visualiser via le code source), voici l'abréviation de lancer directement une exception, la même ci-dessous.package com.jas.reflect; import java.lang.reflect.Constructor; public class ReflectTest { public static void main(String[] args) throws Exception { Class clazz = null; clazz = Class.forName("com.jas.reflect.Fruit"); Constructor<Fruit> constructor1 = clazz.getConstructor(); Constructor<Fruit> constructor2 = clazz.getConstructor(String.class); Fruit fruit1 = constructor1.newInstance(); Fruit fruit2 = constructor2.newInstance("Apple"); } } class Fruit{ public Fruit(){ System.out.println("无参构造器 Run..........."); } public Fruit(String type){ System.out.println("有参构造器 Run..........." + type); } }
Sortie :
无参构造器 Run........... 有参构造器 Run...........Appl
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!