API Java Reflection: tutto ciò che devi sapere



Questo articolo ti introdurrà all'API Java Reflection e ti aiuterà anche a come funziona Reflection in Java e cosa è esattamente con la dimostrazione

Riflessione è un processo di esame o modifica del comportamento in fase di esecuzione di una classe in fase di esecuzione . API Java Reflection viene utilizzato per manipolare la classe ei suoi membri che includono campi, metodi, costruttore, ecc. in fase di esecuzione. In questo articolo capiremo in dettaglio l'API Java Reflection.

Questo articolo si concentrerà sui seguenti suggerimenti:





Quindi iniziamo con questi suggerimenti in questo articolo sull'API Java Reflection

Dove viene utilizzata l'API Java Reflection?

L'API Reflection viene utilizzata principalmente in:



  • IDE (Integrated Development Environment) es. Eclipse, MyEclipse, NetBeans ecc.
  • Debugger
  • Strumenti di test ecc.

Allora, qual è il pacchetto Class in Java lang riflettere?

Classe nel pacchetto java.lang.reflect?

Di seguito è riportato un elenco di varie classi Java in java.lang.package per implementare la reflection-

  • Campo : Questa classe viene utilizzata per raccogliere informazioni dichiarative come tipo di dati, modificatore di accesso, nome e valore di una variabile.
  • Metodo : Questa classe viene utilizzata per raccogliere informazioni dichiarative come modificatore di accesso, tipo restituito, nome, tipi di parametro e tipo di eccezione di un metodo.
  • Costruttore : Questa classe viene utilizzata per raccogliere informazioni dichiarative come modificatore di accesso, nome e tipi di parametro di un costruttore.
  • modificare : Questa classe viene utilizzata per raccogliere informazioni su un particolare modificatore di accesso.

No, diamo un'occhiata ai metodi dell'API Java Reflection,



Metodi utilizzati in java.lang.Class

Metodo

Descrizione

public String getName ()

restituisce il nome della classe

public static Class forName (String className) genera ClassNotFoundException

carica la classe e restituisce il riferimento della classe Class.

public Object newInstance () genera InstantiationException, IllegalAccessException

crea una nuova istanza.

public boolean isInterface ()

controlla se è l'interfaccia.

public boolean isArray ()

controlla se è array.

public boolean isPrimitive ()

controlla se è primitivo.

public Class getSuperclass ()

restituisce il riferimento alla classe della superclasse.

public Field [] getDeclaredFields () genera SecurityException

restituisce il numero totale di campi di questa classe.

Il metodo pubblico [] getDeclaredMethods () genera SecurityException

restituisce il numero totale di metodi di questa classe.

public Constructor [] getDeclaredConstructors () genera SecurityException

restituisce il numero totale di costruttori di questa classe.

Il metodo pubblico getDeclaredMethod (String name, Class [] parameterTypes) genera NoSuchMethodException, SecurityException

restituisce l'istanza della classe del metodo.

Andiamo avanti con l'articolo,

Come ottenere l'oggetto della classe Class?

Esistono 3 modi per ottenere l'istanza della classe Class. Sono i seguenti:

  • forName () metodo della classe Class
  • getClass () della classe Object
  • la sintassi .class

forName () metodo della classe Class

  • viene utilizzato per caricare dinamicamente la classe.
  • restituisce l'istanza della classe Class.
  • Dovrebbe essere utilizzato se si conosce il nome completo della classe, che non può essere utilizzato per i tipi primitivi.

Vediamo il semplice esempio del metodo forName ().

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

Produzione:

vantaggi e svantaggi di python

Semplice

Java Reflection: metodo API getClass () della classe Object

Restituisce l'istanza della classe Class. Dovrebbe essere usato se conosci il tipo. Inoltre, può essere utilizzato con le primitive.

class Simple {} class Test {void printName (Object obj) {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)}}

Produzione:

Semplice

La sintassi .class

Se un tipo è disponibile ma non ci sono istanze, è possibile ottenere una Classe aggiungendo '.class' al nome del tipo. Può essere utilizzato anche per il tipo di dati primitivo.

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

Produzione:

booleano

Test

Ora continuiamo con questo articolo sull'API Java Reflection

Vantaggi e svantaggi dell'utilizzo dell'API Java Reflection

Vantaggi dell'utilizzo dell'API Java Reflection

  • Caratteristiche di estensibilità: Un'applicazione può utilizzare classi esterne definite dall'utente creando istanze di oggetti estensibilità utilizzando i loro nomi completi.
  • Strumenti di debug e test : I debugger utilizzano la proprietà di reflection per esaminare i membri privati ​​nelle classi.

Svantaggi dell'utilizzo dell'API Java Reflection

  • Spese generali di prestazione: Le operazioni riflessive hanno prestazioni più lente rispetto alle loro controparti non riflettenti e dovrebbero essere evitate nelle sezioni di codice chiamate frequentemente nelle applicazioni sensibili alle prestazioni.
  • Esposizione di interni: Il codice riflettente rompe le astrazioni e quindi può cambiare il comportamento con gli aggiornamenti della piattaforma.

Così siamo giunti alla fine di questo articolo su 'Java Reflection API'. Se desideri saperne di più,controlla il da Edureka, una società di apprendimento online affidabile. Il corso di formazione e certificazione Java J2EE e SOA di Edureka è progettato per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Si prega di menzionarlo nella sezione commenti di questo articolo e ti risponderemo il prima possibile.