Qu'est-ce que la réflexion en Java ?
Qu'est-ce que la réflexion ?
Désigne principalement la capacité d'un programme à accéder, détecter et modifier son propre statut ou comportement.
Qu'est-ce que la réflexion Java ?
La réflexion Java signifie que dans l'état d'exécution du programme Java, pour n'importe quelle classe, toutes les propriétés et méthodes de cette classe peuvent être obtenues pour un objet donné, toutes les propriétés et méthodes peuvent être obtenues ; être appelé N'importe laquelle de ses propriétés et méthodes. Cette méthode d'obtention dynamique du contenu d'une classe et d'appel dynamique d'objets est appelée mécanisme de réflexion.
Le mécanisme de réflexion Java fournit principalement les fonctions suivantes :
* 1. Déterminer la classe à laquelle appartient tout objet au moment de l'exécution.
* 2. Construisez un objet de n'importe quelle classe au moment de l'exécution.
* 3. Déterminez les variables membres et les méthodes de n'importe quelle classe au moment de l'exécution.
* 4. Appelez la méthode de n'importe quel objet au moment de l'exécution.
Le mécanisme de réflexion de Java est principalement utilisé pour analyser les capacités des classes. Nous pouvons obtenir des informations sur les membres et les membres de chaque type dans un programme ou un assembly au moment de l'exécution. Les types d'objets généraux du programme sont confirmés lors de la compilation. Le mécanisme de réflexion de Java peut créer dynamiquement des objets et appeler leurs propriétés pendant l'exécution. Par conséquent, le cœur de la réflexion consiste à charger dynamiquement des classes ou à appeler des méthodes pour accéder aux propriétés pendant l'exécution. Il n'est pas nécessaire de savoir à l'avance qui est l'objet en cours d'exécution.
La réflexion peut être utilisée pour :
Construire un objet de n'importe quelle classe pendant l'exécution. Déterminer la classe à laquelle appartient un objet/s'il s'agit d'une instance d'un certain. classe pendant l'exécution. Obtenez les propriétés et les méthodes de n'importe quelle classe, y compris les méthodes publiques héritées qui appellent les méthodes de n'importe quel objet pendant l'exécution.
Exemple :
a) Méthode Get
La classe de routine DumpMethods démontre le rôle de base de l'API Reflection, qui lit les paramètres de ligne de commande spécifiés nom de la classe, puis imprime les informations sur la méthode de cette classe.
import java.lang.reflect.Method; public class DumpMethods { public static void main(String[] args) throws Exception //在方法后加上这句,异常就消失了 { //获得字符串所标识的类的class对象 Class<?> classType = Class.forName("java.lang.String");//在此处传入字符串指定类名,所以参数获取可以是一个运行期的行为,可以用args[0] //返回class对象所对应的类或接口中,所声明的所有方法的数组(包括私有方法) Method[] methods = classType.getDeclaredMethods(); //遍历输出所有方法声明 for(Method method : methods) { System.out.println(method); } } }
b) Méthode d'appel par réflexion
import java.lang.reflect.Method; public class InvokeTester { public int add(int param1, int param2) { return param1 + param2; } public String echo(String message) { return "Hello: " + message; } public static void main(String[] args) throws Exception { // 以前的常规执行手段 InvokeTester tester = new InvokeTester(); System.out.println(tester.add(1, 2)); System.out.println(tester.echo("Tom")); System.out.println("---------------------------"); // 通过反射的方式 // 第一步,获取Class对象 // 前面用的方法是:Class.forName()方法获取 // 这里用第二种方法,类名.class Class<?> classType = InvokeTester.class; // 生成新的对象:用newInstance()方法 Object invokeTester = classType.newInstance(); System.out.println(invokeTester instanceof InvokeTester); // 输出true // 通过反射调用方法 // 首先需要获得与该方法对应的Method对象 Method addMethod = classType.getMethod("add", new Class[] { int.class, int.class }); // 第一个参数是方法名,第二个参数是这个方法所需要的参数的Class对象的数组 // 调用目标方法 Object result = addMethod.invoke(invokeTester, new Object[] { 1, 2 }); System.out.println(result); // 此时result是Integer类型 //调用第二个方法 Method echoMethod = classType.getDeclaredMethod("echo", new Class[]{String.class}); Object result2 = echoMethod.invoke(invokeTester, new Object[]{"Tom"}); System.out.println(result2); } }
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)

Sujets chauds



Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
