Le langage Java est un langage de programmation orienté objet, qui présente les avantages d'une bonne multiplateforme et d'une maintenance facile. Le mécanisme de réflexion du langage Java est une fonctionnalité importante du langage Java. Il permet au programme d'obtenir dynamiquement des informations sur une certaine classe au moment de l'exécution et d'utiliser les méthodes et les attributs fournis par la classe, améliorant ainsi l'évolutivité et la flexibilité du programme. Cet article explique comment utiliser la réflexion du langage Java.
Le mécanisme de réflexion est un mécanisme dynamique du langage Java, qui permet aux programmeurs d'obtenir dynamiquement des informations de classe lors de l'écriture de code, y compris les constructeurs de classe, les méthodes et les propriétés, etc. Le mécanisme de réflexion du langage Java se compose principalement de trois classes : Classe, Constructeur et Méthode. Parmi eux, Class représente le type de la classe, Constructor représente le constructeur de la classe et Method représente la méthode de la classe.
Grâce à l'objet de classe Class, nous pouvons obtenir les informations complètes de la classe, y compris le nom de la classe, la classe parent, l'interface, la méthode constructeur, la méthode membre, les attributs du membre, les annotations, etc. Par exemple, le code suivant montre l'obtention du nom de classe et du nom de classe parent d'une classe :
public 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; } public int getAge() { return age; } } public class Main { public static void main(String[] args) { Class<Person> pClass = Person.class; System.out.println("类名:" + pClass.getName()); System.out.println("父类名:" + pClass.getSuperclass().getName()); } }
Dans le code ci-dessus, nous obtenons la Class de la classe Person via <code>Person.class
code> tapez, vous pouvez alors utiliser la méthode getName()
pour obtenir le nom de la classe, utilisez la méthode getSuperClass()
pour obtenir la classe parent de la classe , et enfin afficher le nom de la classe et le nom de la classe parent. Person.class
获取到Person类的Class
类型,然后可以使用getName()
方法获取该类的名称,使用getSuperClass()
方法获取该类的父类,最终输出类名和父类名称。
除了获取类名和父类名称,我们还可以通过反射获取其它类的信息,例如获取类的构造器、成员方法、成员属性等等,下面的代码演示了如何获取Person类的构造器、成员变量和成员方法,并通过反射来调用它们:
public 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; } public int getAge() { return age; } public void sayHello() { System.out.println("Hello, my name is " + name); } } public class Main { public static void main(String[] args) throws Exception { Class<Person> pClass = Person.class; // 获取所有构造器 Constructor<?>[] constructors = pClass.getDeclaredConstructors(); // 获取指定的构造器 Constructor<?> constructor = pClass.getDeclaredConstructor(String.class, int.class); // 新建对象 Person person = (Person) constructor.newInstance("Tom", 20); // 获取所有成员变量 Field[] fields = pClass.getDeclaredFields(); // 获取指定的成员变量 Field field = pClass.getDeclaredField("name"); // 修改成员变量的值 field.setAccessible(true); field.set(person, "Jerry"); // 获取所有成员方法 Method[] methods = pClass.getDeclaredMethods(); // 获取指定的成员方法 Method method = pClass.getDeclaredMethod("sayHello"); // 调用成员方法 method.invoke(person); } }
在上面的代码中,我们使用getDeclaredConstructors()
方法获取到Person类的所有构造器,然后使用getDeclaredConstructor(String.class, int.class)
获取到指定构造器,使用newInstance()
方法新建对象。接着,我们使用getDeclaredFields()
方法获取到Person类的所有成员变量,使用getDeclaredField("name")
方法获取到指定成员变量,并使用setAccessible(true)
方法调用私有成员变量。最后,我们使用getDeclaredMethods()
方法获取到Person类的所有成员方法,使用getDeclaredMethod("sayHello")
方法获取到指定成员方法,并使用invoke()
rrreee
Dans le code ci-dessus, nous utilisons la méthodegetDeclaredConstructors()
pour obtenir tous les constructeurs de la classe Person , puis utilisez getDeclaredConstructor( String.class, int.class)
Obtenez le constructeur spécifié et utilisez la méthode newInstance()
pour créer un nouvel objet. Ensuite, nous utilisons la méthode getDeclaredFields()
pour obtenir toutes les variables membres de la classe Person, utilisons la méthode getDeclaredField("name")
pour obtenir les variables membres spécifiées, et utilisez La méthode setAccessible(true)
appelle des variables membres privées. Enfin, nous utilisons la méthode getDeclaredMethods()
pour obtenir toutes les méthodes membres de la classe Person, utilisons la méthode getDeclaredMethod("sayHello")
pour obtenir la méthode membre spécifiée, et use La méthode Invoke()
appelle les méthodes membres. - Lorsque vous utilisez le mécanisme de réflexion, vous devez faire attention aux points suivants :
- Les performances du mécanisme de réflexion sont inférieures car il doit obtenir les informations de la classe au moment de l'exécution, et ces informations ont été déterminées à la compilation temps, donc lorsque cela est possible, l'utilisation d'un mécanisme de réflexion doit être évitée autant que possible.
- Le mécanisme de réflexion peut accéder et modifier les propriétés privées et les méthodes privées de la classe, ce qui rompt l'encapsulation de la classe et doit être utilisé avec prudence pour éviter les effets indésirables.
Le mécanisme de réflexion doit gérer les exceptions, telles que NoSuchMethodException, IllegalAccessException, etc., vous devez donc faire attention à la gestion des exceptions lorsque vous utilisez le mécanisme de réflexion.
🎜🎜En bref, le mécanisme de réflexion du langage Java est une fonctionnalité très importante. Il permet au programme d'obtenir dynamiquement des informations de classe et d'utiliser les méthodes et attributs de la classe, améliorant ainsi l'évolutivité et la flexibilité du programme. Lorsque vous utilisez le mécanisme de réflexion, vous devez prêter attention à des problèmes tels que les performances, l'encapsulation et la gestion des exceptions pour garantir la qualité et la fiabilité du code. 🎜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

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Dreamweaver CS6
Outils de développement Web visuel

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP