Java Reflection API: Alt hvad du behøver at vide



Denne artikel introducerer dig til Java Reflection API og hjælper også med, hvordan Reflection fungerer i Java, og hvad det er nøjagtigt med demonstration

Afspejling er en proces til at undersøge eller ændre en klasses kørselstid på kørselstid . Java Reflection API bruges til at manipulere klassen og dens medlemmer, som inkluderer felter, metoder, konstruktør osv. ved kørsel. I denne artikel vil vi forstå Java Reflection API i detaljer.

Denne artikel vil fokusere på følgende punkter:





Så lad os komme i gang med disse markører i denne artikel om Java Reflection API

Hvor bruges Java Reflection API?

Reflection API bruges hovedsageligt i:



  • IDE (integreret udviklingsmiljø) f.eks. Eclipse, MyEclipse, NetBeans osv.
  • Fejlfinding
  • Testværktøjer osv.

Så hvad er Class in Java lang reflekterende pakke?

Klasse i java.lang.reflect-pakke?

Følgende er en liste over forskellige Java-klasser i java.lang.package til implementering af refleksion-

  • Mark : Denne klasse bruges til at indsamle deklarative oplysninger såsom datatype, adgangsmodifikator, navn og værdi på en variabel.
  • Metode : Denne klasse bruges til at indsamle deklarative oplysninger såsom adgangsmodifikator, returtype, navn, parametertyper og en undtagelsestype for en metode.
  • Bygger : Denne klasse bruges til at indsamle deklarative oplysninger såsom adgangsmodifikator, navn og parametertyper for en konstruktør.
  • Redigere : Denne klasse bruges til at indsamle oplysninger om en bestemt adgangsmodifikator.

Nej, lad os se på Java Reflection API-metoder,



Metoder anvendt i java.lang.Class

Metode

Beskrivelse

offentlig String getName ()

returnerer klassens navn

public static Class forName (String className) kaster ClassNotFoundException

indlæser klassen og returnerer referencen til klasseklassen.

public Object newInstance () kaster InstantiationException, IllegalAccessException

opretter ny instans.

offentlig boolsk isInterface ()

kontrollerer, om det er interface.

offentlig boolsk isArray ()

kontrollerer, om det er array.

hvad er substring i java

offentlig boolsk isPrimitive ()

kontrollerer, om den er primitiv.

offentlig klasse getSuperclass ()

returnerer superklasse-klassereferencen.

public Field [] getDeclaredFields () kaster SecurityException

returnerer det samlede antal felter i denne klasse.

offentlig Metode [] getDeclaredMethods () kaster SecurityException

returnerer det samlede antal metoder i denne klasse.

public Constructor [] getDeclaredConstructors () kaster SecurityException

returnerer det samlede antal konstruktører i denne klasse.

public Method getDeclaredMethod (String name, Class [] parameterTypes) throw NoSuchMethodException, SecurityException

returnerer metode klasse instansen.

Lad os gå videre med artiklen,

Hvordan får man genstanden til klasseklassen?

Der er 3 måder at få forekomsten af ​​klasse klasse på. De er som følger:

  • forName () metode i klasse klasse
  • getClass () -metoden til objektklasse
  • .klassens syntaks

forName () metode i klasse klasse

  • bruges til at indlæse klassen dynamisk.
  • returnerer forekomsten af ​​klasse klasse.
  • Det skal bruges, hvis du kender klassens fuldt kvalificerede navn. Dette kan ikke bruges til primitive typer.

Lad os se det enkle eksempel på metoden forName ().

klasse Simpel {} klassetest {offentlig statisk ugyldig hoved (String args []) {Klasse c = Klasse.fornavn ('Simpel') System.out.println (c.getName ())}}

Produktion:

Enkel

Java-refleksion: API getClass () -metode af objektklasse

Det returnerer forekomsten af ​​klasse klasse. Det skal bruges, hvis du kender typen. Desuden kan den bruges med primitiver.

klasse Simpel {} klassetest {ugyldigt printnavn (Objekt obj) {Klasse c = obj.getClass () System.out.println (c.getName ())} offentlig statisk ugyldig hoved (String args []) {Simpel s = ny Enkel () Test t = ny test () t.printName (s)}}

Produktion:

Enkel

.Klassesyntaks

Hvis en type er tilgængelig, men der ikke er nogen forekomst, er det muligt at få en klasse ved at tilføje '.class' til navnet på typen. Den kan også bruges til primitiv datatype.

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

Produktion:

boolsk

Prøve

Lad os nu fortsætte med denne Java Reflection API-artikel

Fordele og ulemper ved at bruge Java Reflection API

Fordele ved at bruge Java Reflection API

  • Udvidelsesfunktioner: En applikation kan gøre brug af eksterne, brugerdefinerede klasser ved at oprette forekomster af udvidelsesobjekter ved hjælp af deres fuldt kvalificerede navne.
  • Fejlfindings- og testværktøjer : Debuggere bruger refleksionsegenskaben til at undersøge private medlemmer i klasser.

Ulemper ved at bruge Java Reflection API

  • Ydelsesomkostninger: Reflekterende operationer har langsommere ydeevne end deres ikke-reflekterende kolleger og bør undgås i sektioner af kode, der ofte kaldes i præstationsfølsomme applikationer.
  • Eksponering af interner: Reflekterende kode bryder abstraktioner og kan derfor ændre adfærd ved opgraderinger af platformen.

Således er vi nået til slutningen af ​​denne artikel om 'Java Reflection API'. Hvis du ønsker at lære mere,tjek den af Edureka, et betroet online læringsfirma. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til at træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarfeltet i denne artikel, og vi vender tilbage til dig hurtigst muligt.

hvordan man tilføjer java til stien