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:
- Hvor Java Reflection API brugt?
- Klasse i java.lang.reflect-pakke
- Metoder anvendt i java.lang.Class
- Hvordan får man genstanden til klasseklassen?
- Fordele og ulemper ved at bruge Java Reflection API
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