Maison Java javaDidacticiel Comment appeler une méthode en utilisant la réflexion en Java

Comment appeler une méthode en utilisant la réflexion en Java

Dec 23, 2023 am 08:18 AM
java 反射 调用方法

Comment appeler une méthode en utilisant la réflexion en Java

Comment utiliser la réflexion pour appeler des méthodes en Java

La réflexion est une fonctionnalité importante du langage Java. Elle peut obtenir dynamiquement des informations sur la classe et faire fonctionner les membres de la classe au moment de l'exécution, y compris les champs, les méthodes, les constructeurs, etc. L'utilisation de la réflexion nous permet de manipuler les membres d'une classe sans connaître la classe spécifique au moment de la compilation, ce qui nous permet d'écrire du code plus flexible et plus polyvalent. Cet article explique comment utiliser la réflexion pour appeler des méthodes en Java et donne des exemples de code spécifiques.

1. Obtenir l'objet Class de la classe
En Java, pour utiliser la réflexion pour appeler une méthode, vous devez d'abord obtenir l'objet Class de la classe. Vous pouvez obtenir l'objet Class des manières suivantes :

  1. Utilisez l'attribut class de la classe : classname.class
    Par exemple, pour obtenir l'objet Class de la classe String, vous pouvez utiliser le code suivant :
    Class stringClass = String.class;
  2. Utilisez la méthode getClass() de l'objet
    Par exemple, pour obtenir l'objet Class d'un objet chaîne, vous pouvez utiliser le code suivant :
    String str = "Bonjour";
    Class strClass = str. getClass();
  3. Utilisez le statique de la méthode de classe Class pourName()
    Par exemple, pour obtenir l'objet Class de la classe String, vous pouvez utiliser le code suivant :
    Class stringClass = Class.forName("java.lang .String");

2. Appelez la méthode
pour obtenir la classe de la classe. Une fois l'objet créé, vous pouvez utiliser la réflexion pour appeler les méthodes de la classe. Tout d’abord, nous devons récupérer l’objet de la méthode. Vous pouvez obtenir l'objet de la méthode des deux manières suivantes :

  1. Utilisez la méthode getMethod() de la classe Class pour obtenir la méthode spécifiée
    Cette méthode nécessite que le nom et le type de paramètre de la méthode soient transmis, et renvoie un objet méthode. Par exemple, le code suivant obtient la méthode length() de la classe String :
    Method lengthMethod = stringClass.getMethod("length");
  2. Utilisez la méthode getMethods() de la classe Class pour obtenir toutes les méthodes publiques
    Cette méthode renvoie une liste contenant toutes les méthodes publiques Tableau de méthodes. Par exemple, le code suivant obtient toutes les méthodes publiques de la classe String :
    Method[] METHODS = stringClass.getMethods();

Après avoir obtenu l'objet de la méthode, vous pouvez utiliser la méthode Invocation() de la classe Method. pour appeler la méthode. La méthode Invoke() doit transmettre l'objet auquel appartient la méthode ainsi que les paramètres de la méthode, et renvoie la valeur de retour de la méthode. Par exemple, le code suivant appelle la méthode length() de la classe String et renvoie la valeur de retour de la méthode :
String str = "Hello";
Method lengthMethod = stringClass.getMethod("length"); (int) lengthMethod .invoke(str);
System.out.println(length);

3. Exemple de code

Ensuite, un exemple de code complet est donné pour montrer comment utiliser la réflexion pour appeler des méthodes en Java :

import java.lang.reflect.Method;

public class ReflectionExample {
    public static void main(String[] args) throws Exception {
        // 获取String类的Class对象
        Class stringClass = String.class;

        // 获取String类的length()方法
        Method lengthMethod = stringClass.getMethod("length");

        // 创建一个字符串对象
        String str = "Hello, Reflection!";

        // 调用length()方法,并输出返回值
        int length = (int) lengthMethod.invoke(str);
        System.out.println("字符串的长度为:" + length);
    }
}
Copier après la connexion

Dans le code ci-dessus, obtenez d'abord l'objet Class de la classe String, puis obtenez la méthode length() de la classe String et créez un objet chaîne. Enfin, la méthode length() est appelée et la valeur de retour est affichée, qui correspond à la longueur de la chaîne.

Résumé

Grâce à la réflexion, vous pouvez obtenir dynamiquement des informations sur la classe et faire fonctionner les membres de la classe au moment de l'exécution. Cet article explique comment utiliser la réflexion pour appeler des méthodes en Java et donne des exemples de code spécifiques. J'espère qu'à travers l'introduction de cet article, les lecteurs pourront mieux comprendre et maîtriser l'utilisation de la réflexion.

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 de ce site Web
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

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Racine carrée en Java Racine carrée en Java Aug 30, 2024 pm 04:26 PM

Racine carrée en Java

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Nombre parfait en Java

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Générateur de nombres aléatoires en Java

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Weka en Java

Numéro Armstrong en Java Numéro Armstrong en Java Aug 30, 2024 pm 04:26 PM

Numéro Armstrong en Java

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Numéro de Smith en Java

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Questions d'entretien chez Java Spring

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Break or Return of Java 8 Stream Forach?

See all articles