Java Reflection API: Alt du trenger å vite



Denne artikkelen vil introdusere deg for Java Reflection API og også hjelpe hvordan Reflection fungerer i Java og hva det er nøyaktig med demonstrasjon

Speilbilde er en prosess med å undersøke eller endre kjøretidens oppførsel i løpet av kjøretiden . Java Reflection API brukes til å manipulere klassen og dens medlemmer som inkluderer felt, metoder, konstruktør, etc. ved kjøretid. I denne artikkelen vil vi forstå Java Reflection API i detalj.

Denne artikkelen vil fokusere på følgende tips:





Så la oss komme i gang med disse pekerne i denne artikkelen om Java Reflection API

Hvor brukes Java Reflection API?

Reflection API brukes hovedsakelig i:



  • IDE (Integrated Development Environment) f.eks. Formørkelse, MyEclipse, NetBeans etc.
  • Feilsøking
  • Testverktøy etc.

Så hva er Class in Java lang reflekterende pakke?

Klasse i java.lang.reflect-pakke?

Følgende er en liste over forskjellige Java-klasser i java.lang.package for å implementere refleksjon-

  • Felt : Denne klassen brukes til å samle deklarativ informasjon som datatype, tilgangsmodifikator, navn og verdi på en variabel.
  • Metode : Denne klassen brukes til å samle deklarativ informasjon som tilgangsmodifikator, returtype, navn, parametertyper og unntakstype for en metode.
  • Bygger : Denne klassen brukes til å samle deklarativ informasjon som tilgangsmodifikator, navn og parametertyper til en konstruktør.
  • Redigere : Denne klassen brukes til å samle informasjon om en bestemt tilgangsmodifikator.

Nei la oss ta en titt på Java Reflection API-metoder,



Metoder som brukes i java.lang.Class

Metode

Beskrivelse

offentlig streng getName ()

returnerer kursnavnet

public static Class forName (String className) kaster ClassNotFoundException

laster inn klassen og returnerer referansen til klasseklassen.

public Object newInstance () kaster InstantiationException, IllegalAccessException

skaper ny forekomst.

offentlig boolsk isInterface ()

sjekker om det er grensesnitt.

offentlig boolsk isArray ()

sjekker om det er matrise.

offentlig boolsk isPrimitive ()

sjekker om den er primitiv.

offentlig klasse getSuperclass ()

returnerer superklasse-klassereferansen.

public Field [] getDeclaredFields () kaster SecurityException

returnerer totalt antall felt i denne klassen.

public Method [] getDeclaredMethods () kaster SecurityException

returnerer totalt antall metoder i denne klassen.

foranderlige og uforanderlige gjenstander i java

public Constructor [] getDeclaredConstructors () kaster SecurityException

returnerer det totale antallet konstruktører i denne klassen.

offentlig Metode getDeclaredMethod (strengnavn, klasse [] parameterTypes) kaster NoSuchMethodException, SecurityException

returnerer metodeklasseforekomsten.

La oss gå videre med artikkelen,

Hvordan få objektet til klasse klasse?

Det er tre måter å få forekomsten av klasse klasse. De er som følger:

  • forName () metode for klasse klasse
  • getClass () -metoden til Objektklasse
  • .klass-syntaksen

forName () metode for klasse klasse

  • brukes til å laste klassen dynamisk.
  • returnerer forekomsten av klasse klasse.
  • Den bør brukes hvis du vet det fullt kvalifiserte navnet på klassen. Dette kan ikke brukes til primitive typer.

La oss se det enkle eksemplet på metoden forName ().

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

Produksjon:

Enkel

Java Reflection: API getClass () -metoden til objektklasse

Den returnerer forekomsten av klasseklassen. Den bør brukes hvis du kjenner typen. Videre kan den brukes med primitiver.

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 Enkel () Test t = ny test () t.printName (s)}}

Produksjon:

Enkel

.Klass-syntaksen

Hvis en type er tilgjengelig, men det ikke er noen forekomst, er det mulig å få en klasse ved å legge til '.class' til navnet på typen. Den kan også brukes til primitiv datatype.

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

Produksjon:

boolsk

Test

La oss nå fortsette med denne Java Reflection API-artikkelen

Fordeler og ulemper ved bruk av Java Reflection API

Fordeler med å bruke Java Reflection API

  • Utvidelsesfunksjoner: En applikasjon kan bruke eksterne, brukerdefinerte klasser ved å opprette forekomster av utvidelsesobjekter ved hjelp av deres fullt kvalifiserte navn.
  • Feilsøkings- og testverktøy : Feilsøkere bruker eiendommen til refleksjon for å undersøke private medlemmer i klasser.

Ulemper ved å bruke Java Reflection API

  • Ytelsesomkostninger: Reflekterende operasjoner har lavere ytelse enn deres ikke-reflekterende kolleger, og bør unngås i kodeseksjoner som ofte kalles i ytelsesfølsomme applikasjoner.
  • Eksponering av interner: Reflekterende kode bryter abstraksjoner og kan derfor endre atferd med oppgraderinger av plattformen.

Dermed har vi kommet til en slutt på denne artikkelen om ‘Java Reflection API’. Hvis du ønsker å lære mer,sjekk ut av Edureka, et pålitelig online læringsfirma. Edurekas Java J2EE- og SOA-opplæring og sertifiseringskurs er designet for å trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Spring.

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet i denne artikkelen, og vi vil kontakte deg så snart som mulig.