API Java Reflection: tot el que heu de saber

Aquest article us presentarà l'API Java Reflection i també us ajudarà a funcionar Reflection a Java i què és exactament amb la demostració

Reflexió és un procés d'examen o modificació del comportament en temps d'execució d'una classe en temps d'execució . API Java Reflection s'utilitza per manipular la classe i els seus membres que inclouen camps, mètodes, constructor, etc. en temps d'execució. En aquest article entendríem amb detall l'API de Java Reflection.



Aquest article se centrarà en els consells següents:



Comencem, doncs, amb aquests indicadors en aquest article sobre Java Reflection API

On s’utilitza l’API Java Reflection?

L'API Reflection s'utilitza principalment en:



  • IDE (entorn de desenvolupament integrat), p. Eclipse, MyEclipse, NetBeans, etc.
  • Depurador
  • Eines de prova, etc.

Llavors, què és el paquet Class in Java lang reflect?

Classe al paquet java.lang.reflect?

A continuació es mostra una llista de diverses classes de Java a java.lang.package per implementar la reflexió-

  • Camp : Aquesta classe s'utilitza per recopilar informació declarativa com ara tipus de dades, modificador d'accés, nom i valor d'una variable.
  • Mètode : Aquesta classe s'utilitza per recopilar informació declarativa com ara modificador d'accés, tipus de retorn, nom, tipus de paràmetres i tipus d'excepció d'un mètode.
  • constructor : Aquesta classe s'utilitza per recopilar informació declarativa, com ara modificadors d'accés, noms i tipus de paràmetres d'un constructor.
  • Edita : Aquesta classe s'utilitza per recopilar informació sobre un modificador d'accés en particular.

No, donem una ullada als mètodes de l'API de Java Reflection,



Mètodes utilitzats a java.lang.Class

Mètode

Descripció

public String getName ()

retorna el nom de la classe

public static Class forName (String className) llança ClassNotFoundException

carrega la classe i retorna la referència de la classe Class.

public Object newInstance () llança InstantiationException, IllegalAccessException

crea una nova instància.

implementant una llista enllaçada al c

isInterface boolean públic ()

comprova si és interfície.

isArray booleà públic ()

ronda doble a int java

comprova si és matriu.

booleà públic isPrimitive ()

comprova si és primitiu.

public class getSuperclass ()

retorna la referència de classe de superclasse.

public Field [] getDeclaredFields () llança SecurityException

retorna el nombre total de camps d'aquesta classe.

public Method [] getDeclaredMethods () llança SecurityException

retorna el nombre total de mètodes d'aquesta classe.

public Constructor [] getDeclaredConstructors () llança SecurityException

retorna el nombre total de constructors d'aquesta classe.

mètode públic getDeclaredMethod (nom de la cadena, classe [] parametresTipus) llança NoSuchMethodException, SecurityException

retorna la instància de classe de mètode.

Continuem amb l'article,

Com obtenir l’objecte de la classe Class?

Hi ha 3 maneres d'obtenir la instància de classe Class. Són els següents:

  • forName () mètode de la classe Class
  • mètode getClass () de la classe Object
  • la sintaxi .class

forName () mètode de la classe Class

  • s’utilitza per carregar la classe dinàmicament.
  • retorna la instància de classe Class.
  • S’ha d’utilitzar si coneixeu el nom complet de la classe, que no es pot utilitzar per als tipus primitius.

Vegem l’exemple senzill del mètode forName ().

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

Sortida:

simple

Java Reflection: mètode API getClass () de la classe Object

Torna la instància de classe Class. S’ha d’utilitzar si coneixeu el tipus. A més, es pot utilitzar amb primitius.

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

Sortida:

simple

passar per referència en java

La sintaxi .class

Si hi ha un tipus disponible però no hi ha cap instància, és possible obtenir una classe afegint '.class' al nom del tipus. Es pot utilitzar també per a tipus de dades primitives.

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

Sortida:

booleà

Prova

Ara continuem amb aquest article de l'API de Java Reflection

Avantatges i desavantatges d’utilitzar l’API Java Reflection

Avantatges d'utilitzar l'API Java Reflection

  • Funcions d’extensibilitat: Una aplicació pot fer ús de classes externes definides per l’usuari creant instàncies d’objectes d’extensibilitat mitjançant els seus noms completament qualificats.
  • Eines de depuració i prova : Els depuradors utilitzen la propietat de la reflexió per examinar els membres privats de les classes.

Inconvenients d'utilitzar l'API Java Reflection

  • Rendiment general: Les operacions reflectants tenen un rendiment més lent que les seves contraparts no reflectants, i s’han d’evitar en seccions de codi que s’anomenen freqüentment en aplicacions sensibles al rendiment.
  • Exposició d’internes: El codi reflexiu trenca les abstraccions i, per tant, pot canviar el comportament amb les actualitzacions de la plataforma.

Així hem arribat al final d’aquest article sobre ‘Java Reflection API’. Si voleu obtenir més informació,fes un cop d'ull al per Edureka, una empresa d’aprenentatge en línia de confiança. El curs de formació i certificació Java J2EE i SOA d’Edureka està dissenyat per formar-vos tant per a conceptes bàsics com avançats de Java juntament amb diversos marcs Java com Hibernate & Spring.

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris d’aquest article i us respondrem el més aviat possible.