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:
- Kus kasutati Java Reflection API-d?
- Klass paketis java.lang.reflect
- Jaavas.lang.Class kasutatud meetodid
- Kuidas saada klassi Class objekt?
- Java Reflection API kasutamise eelised ja puudused
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. |
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.