Table des matières
Méthodes d'appel courantes dans la réflexion Java
Obtenir l'objet Class
实例化对象
调用方法
获取和设置字段值
范型的应用
Maison Java javaDidacticiel Exemple d'appel de méthode dans la réflexion Java

Exemple d'appel de méthode dans la réflexion Java

Dec 23, 2023 pm 01:54 PM
调用方法 实例演示 java反射

Exemple dappel de méthode dans la réflexion Java

Méthodes d'appel courantes dans la réflexion Java

Dans la programmation Java, la réflexion est un mécanisme qui peut inspecter, obtenir et exploiter des informations telles que des classes, des interfaces, des méthodes, des champs, etc. pendant l'exécution du programme. Grâce à la réflexion, nous pouvons appeler dynamiquement des méthodes, créer des instances, obtenir des informations sur les classes, etc. au moment de l'exécution, offrant ainsi une plus grande flexibilité et évolutivité pour la conception des programmes. Cet article utilisera des exemples de code spécifiques pour démontrer les méthodes d'appel courantes dans la réflexion Java afin d'aider les lecteurs à acquérir une compréhension approfondie de l'application de la réflexion.

Obtenir l'objet Class

Avant d'utiliser la réflexion, vous devez d'abord obtenir l'objet Class de la classe correspondante. Vous pouvez obtenir l'objet Class en fonction du nom complet de la classe via la méthode Class.forName(), vous pouvez également obtenir l'objet Class via le getClass()de l'objet. > méthode, ou utilisez-la directement Nom de classe .class pour l'obtenir. Class.forName()方法根据类的全限定名来获取Class对象,也可以通过对象的getClass()方法来获取Class对象,或者直接使用类名.class来获取。

// 通过Class.forName()获取Class对象
Class<?> clazz1 = Class.forName("com.example.MyClass");

// 通过对象的getClass()方法获取Class对象
MyClass obj = new MyClass();
Class<?> clazz2 = obj.getClass();

// 直接使用类名.class获取Class对象
Class<?> clazz3 = MyClass.class;
Copier après la connexion

实例化对象

通过反射,可以动态创建一个类的对象。在获取到Class对象之后,可以使用newInstance()方法来创建实例。

Class<?> clazz = Class.forName("com.example.MyClass");
MyClass obj = (MyClass) clazz.newInstance();
Copier après la connexion

调用方法

利用反射,可以动态调用类中的方法。假设有一个类MyClass,其中包含一个方法public void doSomething(String param),我们可以通过反射来调用该方法。

// 获取Method对象
Class<?> clazz = Class.forName("com.example.MyClass");
Method method = clazz.getMethod("doSomething", String.class);

// 创建对象
MyClass obj = (MyClass) clazz.newInstance();

// 调用方法
method.invoke(obj, "Hello, Reflection!");
Copier après la connexion

获取和设置字段值

通过反射,可以获取和设置类中的字段的值。假设有一个类MyClass,其中包含一个字段private String name,我们可以通过反射来获取和设置该字段的值。

// 获取Field对象
Class<?> clazz = Class.forName("com.example.MyClass");
Field field = clazz.getDeclaredField("name");

// 创建对象
MyClass obj = (MyClass) clazz.newInstance();

// 设置字段的值
field.setAccessible(true);
field.set(obj, "Reflection");

// 获取字段的值
String name = (String) field.get(obj);
Copier après la connexion

范型的应用

在使用反射时,有时候涉及到泛型的处理。例如,一个方法返回的是List<String>

Method method = SomeClass.class.getMethod("getList");
Type returnType = method.getGenericReturnType();
if (returnType instanceof ParameterizedType) {
    ParameterizedType type = (ParameterizedType) returnType;
    Type[] typeArguments = type.getActualTypeArguments();
    for (Type typeArgument : typeArguments) {
        Class<?> typeArgClass = (Class<?>) typeArgument;
        System.out.println("List的实际类型是:" + typeArgClass.getName());
    }
}
Copier après la connexion
Objets instanciés

Grâce à la réflexion, vous pouvez créer dynamiquement un objet d'une classe. Après avoir obtenu l'objet Class, vous pouvez utiliser la méthode newInstance() pour créer une instance.

rrreee

Appel de méthodes

En utilisant la réflexion, vous pouvez appeler dynamiquement des méthodes dans une classe. Supposons qu'il existe une classe MyClass, qui contient une méthode public void doSomething(String param), que nous pouvons appeler par réflexion. 🎜rrreee🎜Obtention et définition des valeurs de champ 🎜🎜Grâce à la réflexion, vous pouvez obtenir et définir les valeurs des champs dans une classe. Supposons qu'il existe une classe MyClass, qui contient un champ private String name. Nous pouvons obtenir et définir la valeur de ce champ par réflexion. 🎜rrreee🎜Application des génériques🎜🎜Lors de l'utilisation de la réflexion, cela implique parfois le traitement des génériques. Par exemple, si une méthode renvoie List<string></string>, nous devons obtenir le type réel de la valeur de retour par réflexion. 🎜rrreee🎜Résumé🎜🎜À travers les exemples ci-dessus, nous avons démontré des méthodes d'appel courantes dans la réflexion Java, notamment l'obtention d'objets de classe, l'instanciation d'objets, l'appel de méthodes, l'obtention et la définition de valeurs de champ et la gestion des génériques. La réflexion fournit un moyen efficace d'obtenir et de manipuler les informations de classe au moment de l'exécution, mais en raison de la flexibilité et de la dynamique de la réflexion, elle peut augmenter la complexité et les performances du code. Vous devez donc y réfléchir attentivement lorsque vous utilisez la réflexion. J'espère que cet article pourra aider les lecteurs à mieux comprendre et appliquer la réflexion Java. 🎜🎜Grâce aux exemples ci-dessus, les lecteurs peuvent avoir une compréhension plus profonde de l'application de la réflexion, et en même temps, ils peuvent mener davantage de pratique et d'exploration en fonction de situations spécifiques. La réflexion, en tant que fonctionnalité importante de la programmation Java, peut apporter une plus grande flexibilité et évolutivité à la conception de programmes et présente une grande valeur d'application dans les projets réels. 🎜

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

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

Article chaud

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

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)

Ingénierie inverse avec Java Reflection : démystifier le fonctionnement interne du logiciel Ingénierie inverse avec Java Reflection : démystifier le fonctionnement interne du logiciel Feb 19, 2024 pm 11:20 PM

Ingénierie inverse avec Java Reflection : démystifier le fonctionnement interne du logiciel

Quel est le principe du mécanisme de réflexion de Java ? Quel est le principe du mécanisme de réflexion de Java ? Jun 21, 2023 am 10:53 AM

Quel est le principe du mécanisme de réflexion de Java ?

Méthode et implémentation d'appel d'interface API avec PHP Méthode et implémentation d'appel d'interface API avec PHP Jun 18, 2023 pm 11:22 PM

Méthode et implémentation d'appel d'interface API avec PHP

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

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

Comment obtenir la valeur d'un attribut dans la réflexion Java Comment obtenir la valeur d'un attribut dans la réflexion Java Jan 03, 2024 pm 03:05 PM

Comment obtenir la valeur d'un attribut dans la réflexion Java

Comment créer des objets à l'aide du mécanisme de réflexion Java ? Comment créer des objets à l'aide du mécanisme de réflexion Java ? Apr 15, 2024 pm 04:18 PM

Comment créer des objets à l'aide du mécanisme de réflexion Java ?

Éléments de base des classes de test Java : analyse détaillée et exemple d'affichage Éléments de base des classes de test Java : analyse détaillée et exemple d'affichage Jan 24, 2024 am 10:51 AM

Éléments de base des classes de test Java : analyse détaillée et exemple d'affichage

Techniques pratiques de développement PHP - maîtriser les méthodes d'appel des interfaces API et leurs principes d'implémentation. Techniques pratiques de développement PHP - maîtriser les méthodes d'appel des interfaces API et leurs principes d'implémentation. Sep 05, 2023 pm 12:03 PM

Techniques pratiques de développement PHP - maîtriser les méthodes d'appel des interfaces API et leurs principes d'implémentation.

See all articles