Heijastus on luokan ajoaikakäyttäytymisen tutkiminen tai muuttaminen ajon aikana . Java Reflection -sovellusliittymä käytetään manipuloimaan luokkaa ja sen jäseniä, jotka sisältävät kenttiä, menetelmiä, konstruktoria jne. ajon aikana. Tässä artikkelissa ymmärrämme Java Reflection -sovellusliittymän yksityiskohtaisesti.
c ++ mikä on nimitila
Tässä artikkelissa keskitytään seuraaviin viitteisiin:
- Missä Java Reflection -sovellusliittymää käytettiin?
- Luokka java.lang.reflect-paketissa
- Java.lang.Classissa käytetyt menetelmät
- Kuinka saada Class-luokan kohde?
- Java Reflection -sovellusliittymän käytön edut ja haitat
Joten aloitetaan näiden viitteiden käyttö tässä Java Reflection -sovellusliittymän artikkelissa
Missä Java Reflection -sovellusliittymää käytetään?
Reflection-sovellusliittymää käytetään pääasiassa:
- IDE (integroitu kehitysympäristö) esim. Eclipse, MyEclipse, NetBeans jne.
- Virheen korjaaja
- Testityökalut jne.
Joten mikä on Class Java Java heijastuspaketti?
Luokka java.lang.reflect-paketissa?
Seuraavassa on luettelo Java-luokista java.lang.package-sovelluksessa pohdinta-
- Ala : Tätä luokkaa käytetään keräämään vakuuttavia tietoja, kuten tietotyyppi, pääsymuuttuja, muuttujan nimi ja arvo.
- Menetelmä : Tätä luokkaa käytetään keräämään vakuuttavia tietoja, kuten pääsynmuuttaja, palautustyyppi, nimi, parametrityypit ja menetelmän poikkeustyyppi.
- Rakentaja : Tätä luokkaa käytetään keräämään vakuuttavia tietoja, kuten pääsyn muokkaus, konstruktorin nimi ja parametrityypit.
- Muokata : Tätä luokkaa käytetään tietojen keräämiseen tietystä pääsynmuuttajasta.
Katsokaamme Java Reflection -sovellusliittymän menetelmiä,
Java.lang.Classissa käytetyt menetelmät
Menetelmä | Kuvaus |
public String getName () | palauttaa luokan nimen |
public static Class forName (String className) heittää ClassNotFoundExceptionin | lataa luokan ja palauttaa luokan luokan viitteen. |
public Object newInstance () heittää InstantiationException, IllegalAccessException | luo uuden esiintymän. |
julkinen totuusarvo onInterface () | tarkistaa, onko se käyttöliittymä. |
julkinen Boolen isArray () | tarkistaa, onko se matriisi. |
public boolean isPrimitive () | tarkistaa, onko se alkeellista. |
julkinen luokka getSuperclass () | palauttaa yliluokan luokan viitteen. |
public Field [] getDeclaredFields () heittää SecurityExceptionin | palauttaa tämän luokan kenttien kokonaismäärän. |
public Method [] getDeclaredMethods () heittää SecurityExceptionin | palauttaa tämän luokan menetelmien kokonaismäärän. |
public Constructor [] getDeclaredConstructors () heittää SecurityExceptionin | palauttaa tämän luokan rakentajien kokonaismäärän. |
public Method getDeclaredMethod (String name, Class [] parametrityypit) heittää NoSuchMethodException, SecurityException | palauttaa metodiluokan esiintymän. |
Siirrytään eteenpäin artikkelin kanssa,
Kuinka saada Class-luokan kohde?
On 3 tapaa saada Class-luokan esiintymä. Ne ovat seuraavat:
- forName () -luokan luokan luokka
- getClass () -menetelmä Object-luokassa
- .luokan syntaksista
forName () -luokan luokan luokka
- käytetään luokan dynaamiseen lataamiseen.
- palauttaa Class-luokan esiintymän.
- Sitä tulisi käyttää, jos tiedät luokan täysin hyväksytyn nimen. Tätä ei voida käyttää primitiivisiin tyyppeihin.
Katsotaanpa yksinkertainen esimerkki forName () -metodista.
class Simple {} class Test {public static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}
Tuotos:
Yksinkertainen
Java Reflection: Object-luokan API getClass () -menetelmä
Se palauttaa luokan luokan esiintymän. Sitä tulisi käyttää, jos tiedät tyypin. Lisäksi sitä voidaan käyttää primitiivien kanssa.
class Simple {} class Test {void printName (Object obj) {Class c = obj.getClass () System.out.println (c.getName ())} public staattinen void main (String args []) {Simple s = new Yksinkertainen () testi t = uusi testi () t.printNimi (nimet)}}
Tuotos:
Yksinkertainen
.Luokan syntaksia
Jos tyyppiä on käytettävissä, mutta ei ole esiintymää, on mahdollista saada luokka liittämällä “.class” tyypin nimeen. Sitä voidaan käyttää myös primitiivisiin tietotyyppeihin.
luokan testi {public static void main (String args []) {Class c = looginen.luokka System.out.println (c.getName ()) Class c2 = Test.class System.out.println (c2.getName ()) }}
Tuotos:
looginen
Testata
Jatka nyt tämän Java Reflection -sovellusliittymän artikkelin kanssa
Java Reflection -sovellusliittymän käytön edut ja haitat
Java Reflection -sovellusliittymän käytön edut
- Laajennettavuusominaisuudet: Sovellus voi käyttää ulkoisia, käyttäjän määrittelemiä luokkia luomalla laajennettavuusobjektien esiintymiä käyttämällä niiden täysin päteviä nimiä.
- Virheenkorjaus ja testaustyökalut : Debuggaajat käyttävät heijastusominaisuutta tutkiakseen yksityisiä jäseniä luokissa.
Java Reflection -sovellusliittymän käytön haitat
- Suorituskyky: Heijastavien operaatioiden suorituskyky on hitaampi kuin heijastamattomien vastaavien, ja niitä tulisi välttää koodiosissa, joita kutsutaan usein suorituskykyherkissä sovelluksissa.
- Sisäisten altistuminen: Heijastava koodi rikkoo abstraktit ja voi siksi muuttaa käyttäytymistä alustan päivityksillä.
Siksi olemme päässeet tämän artikkelin 'Java Reflection API' -sivulle. Jos haluat oppia lisää,tutustu Edureka, luotettava verkko-oppimisyritys. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssit on suunniteltu kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia Java-kehyksiä, kuten Hibernate & Spring.
Onko sinulla kysymys meille? Mainitse se tämän artikkelin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.