Java Reflection API: kõik, mida peate teadma



See artikkel tutvustab teile Java Reflection API-d ja aitab ka seda, kuidas Reflection Java-s töötab ja mis see täpselt on

Peegeldus on klassi jooksuaegade käitumise uurimise või muutmise protsess jooksmise ajal . Java Reflection API kasutatakse klassi ja selle liikmete manipuleerimiseks, mis hõlmavad väljad, meetodid, konstruktor jne käitamise ajal. Selles artiklis mõistame Java Reflection API-d üksikasjalikult.

See artikkel keskendub järgmistele näpunäidetele:





Nii et alustagem nende näpunäidetega selles Java Reflection API artiklis

Kus kasutatakse Java Reflection API-d?

Reflection API-d kasutatakse peamiselt:



  • IDE (integreeritud arenduskeskkond) nt. Eclipse, MyEclipse, NetBeans jne
  • Silur
  • Testimisvahendid jne

Mis on klass Java Java peegeldab paketti?

Klass java.lang.reflecti paketis?

Järgnevalt on toodud java.lang.package Java-klasside loetelu peegelduse rakendamiseks

  • Väli : Seda klassi kasutatakse deklaratiivse teabe kogumiseks, näiteks andmetüüp, juurdepääsu modifikaator, muutuja nimi ja väärtus.
  • Meetod : Seda klassi kasutatakse deklaratiivse teabe kogumiseks, näiteks juurdepääsu modifikaator, tagastuse tüüp, nimi, parameetri tüübid ja meetodi erandi tüüp.
  • Ehitaja : Seda klassi kasutatakse deklaratiivse teabe kogumiseks, näiteks juurdepääsu modifikaator, konstruktori nimi ja parameetrite tüübid.
  • Muuda : Seda klassi kasutatakse konkreetse juurdepääsu modifikaatori kohta teabe kogumiseks.

Ärge lubage meil heita pilk Java Reflection API meetoditele,



Jaavas.lang.Class kasutatud meetodid

Meetod

Kirjeldus

public String getName ()

java arvus olevate arvude summa silmusena

tagastab klassi nime

public staatiline Class forName (String klassiNimi) viskab klassi ClassNotFoundException

laadib klassi ja tagastab klassi klassi viite.

public Object newInstance () viskab InstantiationException, IllegalAccessException

loob uue eksemplari.

avalik tõeväärtus onInterface ()

kontrollib, kas see on liides.

avalik tõeväärtus isArray ()

kontrollib, kas see on massiiv.

avalik tõeväärtus isPrimitive ()

kontrollib, kas see on primitiivne.

avalik klass getSuperclass ()

tagastab superklassiklassi viite.

public Field [] getDeclaredFields () viskab SecurityExceptioni

tagastab selle klassi väljade koguarvu.

public Method [] getDeclaredMethods () viskab SecurityExceptioni

tagastab selle klassi meetodite koguarvu.

public Constructor [] getDeclaredConstructors () viskab SecurityExceptioni

tagastab selle klassi konstruktorite koguarvu.

public Method getDeclaredMethod (stringi nimi, klass [] parametritüübid) viskab NoSuchMethodException, SecurityException

tagastab meetodiklassi eksemplari.

Liigume artikliga edasi,

Kuidas saada klassi Class objekt?

Klassi klassi eksemplari saamiseks on kolm võimalust. Need on järgmised:

  • klassi klassi forName () meetod
  • Objekti klassi meetod getClass ()
  • klassi süntaks

klassi klassi forName () meetod

  • kasutatakse klassi dünaamiliseks laadimiseks.
  • tagastab klassi Class eksemplari.
  • Seda tuleks kasutada, kui teate klassi täielikult kvalifitseeritud nime. Seda ei saa kasutada primitiivsete tüüpide puhul.

Vaatame meetodi forName () lihtsat näidet.

klass Lihtne {} klass Test {avalik staatiline void main (String args []) {Klass c = Klass.nimi ('Lihtne') System.out.println (c.getName ())}}

Väljund:

mis on mitmekordne pärimine javas

Lihtne

Java Reflection: objektiklassi API getClass () meetod

See tagastab klassi Class eksemplari. Seda tuleks kasutada, kui teate tüüpi. Pealegi saab seda kasutada koos primitiividega.

klass Lihtne {} klassi test {void printName (objekti objekt) {Klass c = obj.getClass () System.out.println (c.getName ())} avalik staatiline void main (String args []) {Lihtne s = uus Lihtne () test t = uus test () t.printNimi (nimed)}}

Väljund:

Lihtne

Klass. Süntaks

Kui tüüp on saadaval, kuid eksemplari pole, on võimalik saada klass, lisades tüübi nimele '.class'. Seda saab kasutada ka primitiivsete andmetüüpide jaoks.

klassi test {public static void main (String args []) {Klass c = boolean.class System.out.println (c.getName ()) Klass c2 = Test.class System.out.println (c2.getName ()) }}

Väljund:

boolean

Test

Jätkame nüüd selle Java Reflection API artikliga

Java Reflection API kasutamise eelised ja puudused

Java Reflection API kasutamise eelised

  • Laiendamisfunktsioonid: Rakendus võib kasutada väliseid kasutaja määratletud klasse, luues laiendatavuse objektide eksemplare, kasutades nende täielikult kvalifitseeritud nimesid.
  • Silumis- ja testimisvahendid : Silurid kasutavad peegelduse omadust, et uurida klassides eraliikmeid.

Java Reflection API kasutamise puudused

  • Performance üldkulud: Peegeldavate toimingute jõudlus on aeglasem kui nende mittepeegeldavate analoogidega ja neid tuleks vältida koodiosades, mida jõudlustundlikes rakendustes sageli kutsutakse.
  • Sisemine kokkupuude: Peegeldav kood lõhub abstraktsioone ja võib seetõttu platvormi uuendamisega käitumist muuta.

Seega oleme jõudnud selle artikli lõpule, mis käsitleb Java Reflection API-d. Kui soovite rohkem teada saada,vaadake autor Edureka, usaldusväärne veebipõhine õppefirma. Edureka Java J2EE ja SOA koolitus- ja sertifitseerimiskursus on mõeldud selleks, et õpetada teid nii Java põhiliste kui ka edasijõudnute kontseptsioonide jaoks koos erinevate Java-raamistikega nagu Hibernate & Spring.

Kas teil on meile küsimus? Palun mainige seda selle artikli kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.