Reflexion är en process för att undersöka eller modifiera klassens körtidsbeteende vid körtid . Java Reflection API används för att manipulera klassen och dess medlemmar som inkluderar fält, metoder, konstruktör, etc. vid körning. I den här artikeln skulle vi förstå Java Reflection API i detalj.
Den här artikeln kommer att fokusera på följande tips:
- Var Java Reflection API används?
- Klass i java.lang.reflect-paketet
- Metoder som används i java.lang.Class
- Hur får man objektet i klassklassen?
- Fördelar och nackdelar med att använda Java Reflection API
Så låt oss komma igång med dessa pekare i den här artikeln om Java Reflection API
Var används Java Reflection API?
Reflection API används huvudsakligen i:
- IDE (Integrated Development Environment) t.ex. Eclipse, MyEclipse, NetBeans etc.
- Felsökare
- Testverktyg etc.
Så vad är Class in Java lang reflect-paketet?
Klass i java.lang.reflect-paketet?
Nedan följer en lista över olika Java-klasser i java.lang.package för att implementera reflektion-
- Fält : Denna klass används för att samla in deklarativ information som datatyp, åtkomstmodifierare, namn och värde på en variabel.
- Metod : Den här klassen används för att samla in deklarativ information som åtkomstmodifierare, returtyp, namn, parametertyper och undantagstyp för en metod.
- Byggare : Den här klassen används för att samla in deklarativ information, såsom åtkomstmodifierare, namn och parametertyper för en konstruktör.
- Redigera : Denna klass används för att samla information om en viss åtkomstmodifierare.
Nej, låt oss ta en titt på Java Reflection API-metoder,
Metoder som används i java.lang.Class
Metod | Beskrivning |
offentlig sträng getName () | returnerar klassnamnet |
public static Class forName (String className) kastar ClassNotFoundException korsa webbläsartestning i selen | laddar klassen och returnerar referensen för klassklassen. |
public Object newInstance () kastar InstantiationException, IllegalAccessException | skapar ny instans. |
public boolean isInterface () | kontrollerar om det är gränssnitt. |
public boolean isArray () javascript få storleken på matrisen | kontrollerar om det är array. |
public boolean isPrimitive () | kontrollerar om den är primitiv. |
offentlig klass getSuperclass () | returnerar superklassklassreferensen. |
public Field [] getDeclaredFields () kastar SecurityException | returnerar det totala antalet fält i denna klass. |
public Method [] getDeclaredMethods () kastar SecurityException | returnerar det totala antalet metoder i denna klass. |
public Constructor [] getDeclaredConstructors () kastar SecurityException | returnerar det totala antalet konstruktörer i denna klass. |
public Method getDeclaredMethod (Strängnamn, Klass [] parameterTypes) kastar NoSuchMethodException, SecurityException | returnerar metodklassinstansen. |
Låt oss gå vidare med artikeln,
Hur får man objektet i klassklassen?
Det finns tre sätt att få instansen av klassklass. De är som följer:
- forName () -metod i klassklass
- getClass () -metoden för objektklass
- .klass-syntaxen
forName () -metod i klassklass
- används för att ladda klassen dynamiskt.
- returnerar förekomsten av klassklass.
- Den ska användas om du känner till det fullständigt kvalificerade namnet på klassen. Detta kan inte användas för primitiva typer.
Låt oss se det enkla exemplet på metoden forName ().
class Simple {} class Test {public static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}
Produktion:
Enkel
Java Reflection: API getClass () -metod för objektklass
Det returnerar förekomsten av klassklassen. Den ska användas om du känner till typen. Dessutom kan den användas med primitiver.
klass Enkel {} klass Test {ogiltig utskriftsnamn (Objekt obj) {Klass c = obj.getClass () System.out.println (c.getName ())} offentlig statisk ogiltig huvud (String args []) {Enkel s = ny Enkelt () Test t = nytt test () t.printName (s)}}
Produktion:
Enkel
datatyp för datum i sql
.Klass-syntaxen
Om en typ är tillgänglig men det inte finns någon instans är det möjligt att få en klass genom att lägga till '.class' till namnet på typen. Den kan också användas för primitiv datatyp.
klass 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:
booleska
Testa
Låt oss nu fortsätta med den här Java Reflection API-artikeln
Fördelar och nackdelar med att använda Java Reflection API
Fördelar med att använda Java Reflection API
- Förlängningsfunktioner: En applikation kan använda externa, användardefinierade klasser genom att skapa instanser av förlängningsobjekt med deras fullständigt kvalificerade namn.
- Felsöknings- och testverktyg : Debuggers använder egenskapen för reflektion för att undersöka privata medlemmar i klasser.
Nackdelar med att använda Java Reflection API
- Performance Overhead: Reflekterande operationer har långsammare prestanda än deras icke-reflekterande motsvarigheter och bör undvikas i kodavsnitt som ofta kallas i prestandakänsliga applikationer.
- Exponering av interner: Reflekterande kod bryter abstraktioner och kan därför ändra beteende med uppgraderingar av plattformen.
Således har vi kommit till slutet av denna artikel om ”Java Reflection API”. Om du vill lära dig mer,kolla in av Edureka, ett pålitligt inlärningsföretag online. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för att träna dig för både grundläggande och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.
Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i den här artikeln så kommer vi tillbaka så snart som möjligt.