Maison Java javaDidacticiel Trois façons d'apprendre la réflexion Java

Trois façons d'apprendre la réflexion Java

Jan 03, 2024 pm 03:09 PM
策略 掌握 java反射

Trois façons dapprendre la réflexion Java

Pour maîtriser les trois stratégies de réflexion Java, des exemples de code spécifiques sont nécessaires

Introduction :
La réflexion Java est une technologie de programmation puissante qui permet aux programmes d'accéder dynamiquement et de fonctionner au moment de l'exécution en analysant la structure et les méthodes des objets de classes. La maîtrise de la technologie de réflexion Java peut non seulement améliorer la flexibilité et l'évolutivité du code, mais également mettre en œuvre certains modèles de conception complexes. Cet article présentera trois stratégies de réflexion Java couramment utilisées et donnera des exemples de code spécifiques.

Texte :

  1. Obtenir des informations sur la classe

Grâce à la réflexion Java, nous pouvons obtenir diverses informations sur une classe, notamment le nom de la classe, la classe parent, les interfaces implémentées, les variables membres, les constructeurs et les méthodes, etc. L'exemple suivant montre comment utiliser la réflexion pour obtenir les informations de base d'une classe :

public class ReflectionExample {
    public static void main(String[] args) {

        // 获取类的基本信息
        Class<Person> personClass = Person.class;
        System.out.println("类名:" + personClass.getName());
        System.out.println("父类名:" + personClass.getSuperclass().getName());
        
        // 获取类的成员变量信息
        Field[] fields = personClass.getDeclaredFields();
        System.out.println("成员变量:");
        for (Field field : fields) {
            System.out.println(field.getName() + ",类型:" + field.getType().getName());
        }
        
        // 获取类的构造方法信息
        Constructor[] constructors = personClass.getConstructors();
        System.out.println("构造方法:");
        for (Constructor constructor : constructors) {
            System.out.println(constructor.getName() + ",参数个数:" + constructor.getParameterCount());
        }
        
        // 获取类的方法信息
        Method[] methods = personClass.getMethods();
        System.out.println("方法:");
        for (Method method : methods) {
            System.out.println(method.getName() + ",返回类型:" + method.getReturnType().getName());
        }
    }
}

class Person {
    private String name;
    private int age;
    
    public Person() {}
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public void sayHello() {
        System.out.println("Hello, I'm " + name);
    }
}
Copier après la connexion

Le code ci-dessus obtient d'abord l'objet Class de la classe Person, puis obtient le nom, la classe parent et le membre. variables de la classe via l'objet Class, les méthodes de construction, les méthodes et autres informations, et imprimés un par un. Person类的Class对象,然后通过Class对象获取了类的名称、父类、成员变量、构造方法和方法等信息,并逐个打印输出。

  1. 创建对象

使用反射可以在运行时动态地创建一个对象,而不需要提前知道其具体的类名。下面的示例演示了如何通过反射创建一个Person对象:

public class ReflectionExample {
    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {

        // 获取类的构造方法
        Class<Person> personClass = Person.class;
        Constructor<Person> constructor = personClass.getConstructor(String.class, int.class);

        // 创建对象
        Person person = constructor.newInstance("John", 25);
        System.out.println(person.getName());
    }
}

class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return name;
    }
}
Copier après la connexion

上述代码中,通过反射获取了Person类的构造方法Constructor<Person> constructor = personClass.getConstructor(String.class, int.class);,然后利用构造方法创建了一个Person对象Person person = constructor.newInstance("John", 25);

  1. 调用方法

使用反射,我们可以在运行时动态地调用一个对象的方法,而无需在编译时确定方法名和参数类型。下面的示例演示了如何通过反射调用Person类的sayHello方法:

public class ReflectionExample {
    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {

        // 获取类的方法
        Class<Person> personClass = Person.class;
        Method sayHelloMethod = personClass.getMethod("sayHello");

        // 创建对象
        Person person = new Person();

        // 调用方法
        sayHelloMethod.invoke(person);
    }
}

class Person {
    public void sayHello() {
        System.out.println("Hello, I'm a person.");
    }
}
Copier après la connexion

上述代码中,通过反射获取了Person类的方法Method sayHelloMethod = personClass.getMethod("sayHello");,然后创建了一个Person对象并调用了sayHello方法sayHelloMethod.invoke(person);

    Création d'objets


    Grâce à la réflexion, vous pouvez créer dynamiquement un objet au moment de l'exécution sans connaître à l'avance son nom de classe spécifique. L'exemple suivant montre comment créer un objet Person par réflexion : 🎜rrreee🎜Dans le code ci-dessus, la méthode constructeur de la classe Person est obtenue par réflexion Constructor&lt ;Person> constructor = personClass.getConstructor(String.class, int.class);, puis utilisez la méthode constructeur pour créer un objet Person Person person = constructor.newInstance ("Jean", 25);. 🎜
      🎜Appel de méthodes🎜🎜🎜Grâce à la réflexion, nous pouvons appeler dynamiquement la méthode d'un objet au moment de l'exécution sans avoir à déterminer le nom de la méthode et le type de paramètre au moment de la compilation. L'exemple suivant montre comment appeler la méthode sayHello de la classe Person par réflexion : 🎜rrreee🎜Dans le code ci-dessus, la classe Person est obtenu par réflexion Méthode Method sayHelloMethod = personClass.getMethod("sayHello");, puis crée un objet Person et appelle la méthode sayHello sayHelloMethod .invoke(person);. 🎜🎜Conclusion : 🎜En maîtrisant les trois stratégies de réflexion Java, nous pouvons obtenir dynamiquement des informations de classe, créer des objets et appeler des méthodes au moment de l'exécution. Cela rend notre code plus flexible et extensible, et facilite également la mise en œuvre de certains modèles de conception complexes. J'espère que les exemples de code contenus dans cet article pourront aider les lecteurs à mieux comprendre l'utilisation de la réflexion Java. 🎜

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

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)

Points clés de la stratégie de prix et de la conception des promotions dans le système de vente flash PHP Points clés de la stratégie de prix et de la conception des promotions dans le système de vente flash PHP Sep 19, 2023 pm 02:18 PM

Points clés de la stratégie de prix et de la conception des promotions dans le système de vente flash PHP Dans un système de vente flash, la stratégie de prix et la conception des promotions sont des éléments très importants. Des stratégies de prix raisonnables et des promotions bien conçues peuvent inciter les utilisateurs à participer à des activités de vente flash et améliorer l'expérience utilisateur et la rentabilité du système. Ce qui suit présentera en détail les points clés de la stratégie de prix et de la conception des activités promotionnelles dans le système de vente flash PHP, et fournira des exemples de code spécifiques. 1. Points clés dans la conception d’une stratégie de prix : Déterminer le prix de référence : Dans le système de vente flash, le prix de référence fait référence au prix du produit lorsqu’il est normalement vendu. exister

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

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()

exe en php : une stratégie efficace pour réaliser l'expansion des fonctions exe en php : une stratégie efficace pour réaliser l'expansion des fonctions Mar 04, 2024 pm 09:36 PM

EXE vers PHP : une stratégie efficace pour étendre les fonctions. Avec le développement d'Internet, de plus en plus d'applications ont commencé à migrer vers le Web pour obtenir un accès utilisateur plus large et des opérations plus pratiques. Dans ce processus, la demande de conversion de fonctions initialement exécutées sous forme de fichiers EXE (fichiers exécutables) en scripts PHP augmente également progressivement. Cet article explique comment convertir EXE en PHP pour réaliser une extension fonctionnelle et donne des exemples de code spécifiques. Pourquoi convertir EXE en PHP multiplateforme : PHP est un langage multiplateforme

Comment maîtriser l'utilisation des extensions PHP8 en écrivant du code pratique Comment maîtriser l'utilisation des extensions PHP8 en écrivant du code pratique Sep 12, 2023 pm 02:39 PM

Comment maîtriser l'utilisation des extensions PHP8 en écrivant du code pratique Introduction : PHP (Hypertext Preprocessor) est un langage de script open source largement utilisé couramment pour l'écriture d'applications Web. Avec la sortie de PHP8, de nouvelles extensions et fonctionnalités permettent aux développeurs de mieux répondre aux besoins des entreprises et d'améliorer l'efficacité du code. Cet article présentera comment maîtriser l'utilisation des extensions PHP8 en écrivant du code pratique. 1. Comprendre les extensions PHP8 PHP8 introduit de nombreuses nouvelles extensions, telles que FFI,

Principe de jalonnement Astar, démantèlement des revenus, projets et stratégies de largage aérien et stratégie opérationnelle au niveau de la nounou Principe de jalonnement Astar, démantèlement des revenus, projets et stratégies de largage aérien et stratégie opérationnelle au niveau de la nounou Jun 25, 2024 pm 07:09 PM

Table des matières Principe de jalonnement d'Astar Dapp Revenus de jalonnement Démantèlement des projets potentiels de largage aérien : AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap Stratégie et fonctionnement du jalonnement "AstarDapp Staking" a été mis à niveau vers la version V3 au début de cette année, et de nombreux ajustements ont été apportés aux revenus de jalonnement règles. À l'heure actuelle, le premier cycle de jalonnement est terminé et le sous-cycle de « vote » du deuxième cycle de jalonnement vient de commencer. Pour bénéficier des avantages « récompense supplémentaire », vous devez franchir cette étape critique (qui devrait durer jusqu'au 26 juin, soit moins de 5 jours). Je vais détailler les revenus du staking Astar,

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

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.

Analyse complète des étapes et stratégies d'installation du logiciel CentOS7 Analyse complète des étapes et stratégies d'installation du logiciel CentOS7 Jan 04, 2024 am 09:40 AM

J'ai commencé à entrer officiellement en contact avec Linux en 2010. La distribution d'entrée de gamme était Ubuntu10.10, puis je suis passée à Ubunu11.04. Au cours de cette période, j'ai également essayé de nombreuses autres distributions grand public. Après mon entrée au laboratoire, j'ai commencé à utiliser CentOS5, puis CentOS6, et maintenant j'ai évolué vers CentOS7. J'utilise Linux depuis quatre ans. Les trois premières années ont été consacrées à déconner, à perdre beaucoup de temps et à acquérir beaucoup d'expérience et de leçons. Peut-être que je suis vraiment vieux maintenant et que je ne veux plus m'en soucier. J'espère juste qu'après avoir configuré un système, je pourrai continuer à l'utiliser. Pourquoi écrire/lire cet article ? Lorsque vous utilisez Linux, en particulier CentOS, vous rencontrerez des pièges, ou des choses que les personnes atteintes de mysophobie ne peuvent tolérer : des logiciels provenant de sources officielles

Analyse de la stratégie de cache MyBatis : bonnes pratiques pour le cache de premier niveau et le cache de deuxième niveau Analyse de la stratégie de cache MyBatis : bonnes pratiques pour le cache de premier niveau et le cache de deuxième niveau Feb 21, 2024 pm 05:51 PM

Analyse de la stratégie de cache MyBatis : bonnes pratiques pour le cache de premier niveau et le cache de deuxième niveau Lors du développement avec MyBatis, nous devons souvent réfléchir au choix de la stratégie de cache. Le cache de MyBatis est principalement divisé en deux types : le cache de premier niveau et le cache de deuxième niveau. Le cache de premier niveau est un cache de niveau SqlSession, tandis que le cache de deuxième niveau est un cache de niveau Mapper. Dans les applications pratiques, l’utilisation rationnelle de ces deux caches constitue un moyen important pour améliorer les performances du système. Cet article utilisera des exemples de code spécifiques pour analyser un MyBatis

See all articles