API Java Reflection: tout ce que vous devez savoir

Cet article vous présentera l'API Java Reflection et vous expliquera également comment Reflection fonctionne en Java et ce que c'est exactement avec la démonstration

Réflexion est un processus d'examen ou de modification du comportement d'exécution d'une classe au moment de l'exécution . API Java Reflection est utilisé pour manipuler la classe et ses membres qui incluent des champs, des méthodes, un constructeur, etc. au moment de l'exécution. Dans cet article, nous comprendrons l'API Java Reflection en détail.



Cet article se concentrera sur les pointeurs suivants:



Commençons donc avec ces pointeurs dans cet article sur l'API Java Reflection

Où l'API Java Reflection est-elle utilisée?

L'API Reflection est principalement utilisée dans:



  • IDE (environnement de développement intégré), par ex. Eclipse, MyEclipse, NetBeans etc.
  • Débogueur
  • Outils de test, etc.

Alors, quelle est la classe dans le package Java Lang Reflect?

Classe dans le package java.lang.reflect?

Voici une liste de différentes classes Java dans java.lang.package pour implémenter la réflexion-

  • Champ : Cette classe est utilisée pour collecter des informations déclaratives telles que le type de données, le modificateur d'accès, le nom et la valeur d'une variable.
  • Méthode : Cette classe est utilisée pour collecter des informations déclaratives telles que le modificateur d'accès, le type de retour, le nom, les types de paramètres et le type d'exception d'une méthode.
  • Constructeur : Cette classe est utilisée pour collecter des informations déclaratives telles que le modificateur d'accès, le nom et les types de paramètres d'un constructeur.
  • Modifier : Cette classe est utilisée pour collecter des informations sur un modificateur d'accès particulier.

Non, jetons un œil aux méthodes de l'API Java Reflection,



Méthodes utilisées dans java.lang.Class

Méthode

La description

public String getName ()

renvoie le nom de la classe

Public static La classe forName (String className) lève une exception ClassNotFoundException

charge la classe et renvoie la référence de la classe Class.

Public Object newInstance () lève InstantiationException, IllegalAccessException

crée une nouvelle instance.

public booléen isInterface ()

vérifie s'il s'agit d'une interface.

public booléen isArray ()

vérifie s'il s'agit d'un tableau.

public booléen isPrimitive ()

vérifie s'il est primitif.

Classe publique getSuperclass ()

renvoie la référence de classe de superclasse.

Public Field [] getDeclaredFields () lève SecurityException

renvoie le nombre total de champs de cette classe.

La méthode publique [] getDeclaredMethods () lève SecurityException

renvoie le nombre total de méthodes de cette classe.

public Constructor [] getDeclaredConstructors () lève SecurityException

renvoie le nombre total de constructeurs de cette classe.

La méthode publique getDeclaredMethod (String name, Class [] parameterTypes) lève NoSuchMethodException, SecurityException

renvoie l'instance de classe de méthode.

programme de recherche binaire en java

Avançons avec l'article,

Comment obtenir l'objet de classe Class?

Il existe 3 façons d'obtenir l'instance de la classe Class. Ils sont les suivants:

  • forName () méthode de la classe Class
  • Méthode getClass () de la classe Object
  • la syntaxe .class

forName () méthode de la classe Class

  • est utilisé pour charger la classe dynamiquement.
  • renvoie l'instance de la classe Class.
  • Il doit être utilisé si vous connaissez le nom complet de la classe. Cela ne peut pas être utilisé pour les types primitifs.

Voyons l'exemple simple de la méthode forName ().

class Simple {} classe Test {public static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}

Production:

Facile

Réflexion Java: méthode API getClass () de la classe Object

Il renvoie l'instance de la classe Class. Il doit être utilisé si vous connaissez le type. De plus, il peut être utilisé avec des primitives.

class Simple {} classe Test {void printName (Object obj) {Class c = obj.getClass () System.out.println (c.getName ())} public static void main (String args []) {Simple s = new Test simple () t = nouveau test () t.printName (s)}}

Production:

Facile

La syntaxe .class

Si un type est disponible mais qu'il n'y a pas d'instance, alors il est possible d'obtenir une classe en ajoutant «.class» au nom du type. Il peut également être utilisé pour le type de données primitif.

class Test {public static void main (String args []) {Class c = boolean.class System.out.println (c.getName ()) Class c2 = Test.class System.out.println (c2.getName ()) }}

Production:

booléen

Tester

Continuons maintenant avec cet article sur l'API Java Reflection

Avantages et inconvénients de l'utilisation de l'API Java Reflection

Avantages de l'utilisation de l'API Java Reflection

  • Caractéristiques d'extensibilité: Une application peut utiliser des classes externes définies par l'utilisateur en créant des instances d'objets d'extensibilité en utilisant leurs noms complets.
  • Outils de débogage et de test : Les débogueurs utilisent la propriété de réflexion pour examiner les membres privés dans les classes.

Inconvénients de l'utilisation de l'API Java Reflection

  • Frais généraux de performance: Les opérations réfléchissantes ont des performances plus lentes que leurs homologues non réfléchissantes et doivent être évitées dans les sections de code fréquemment appelées dans les applications sensibles aux performances.
  • Exposition des composants internes: Le code réfléchissant rompt les abstractions et peut donc changer de comportement avec les mises à niveau de la plate-forme.

Nous sommes donc arrivés à la fin de cet article sur «Java Reflection API». Si vous souhaitez en savoir plus,Vérifiez par Edureka, une entreprise d'apprentissage en ligne de confiance. Le cours de formation et de certification Java J2EE et SOA d'Edureka est conçu pour vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Spring.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de cet article et nous vous répondrons dans les plus brefs délais.