Java Reflection API: Allt du behöver veta



Den här artikeln presenterar dig för Java Reflection API och hjälper också till hur Reflection fungerar i Java och vad det är exakt med demonstration

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:





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.