„Java Reflection“ API: viskas, ką reikia žinoti



Šis straipsnis supažindins jus su „Java Reflection“ API ir padės parodyti, kaip „Reflection“ veikia „Java“ ir kas tai yra tiksliai.

Atspindys yra klasės bėgimo laiko elgesio nagrinėjimo ar modifikavimo procesas bėgimo metu . „Java Reflection“ API yra naudojamas manipuliuoti klase ir jos nariais, kurie apima laukus, metodus, konstruktorių ir kt. vykdymo metu. Šiame straipsnyje mes išsamiai suprasime „Java Reflection“ API.

Šiame straipsnyje daugiausia dėmesio bus skiriama šiems patarimams:





Taigi pradėkime nuo šių nuorodų šiame straipsnyje apie „Java Reflection“ API

Kur naudojama „Java Reflection“ API?

„Reflection“ API daugiausia naudojama:



  • IDE (Integruota kūrimo aplinka) pvz. „Eclipse“, „MyEclipse“, „NetBeans“ ir kt.
  • Derintojas
  • Testavimo įrankiai ir kt.

Taigi, kas yra „Java Java“ klasė atspindi paketą?

Klasė java.lang.reflect pakete?

Toliau pateikiamas įvairių Java klasių sąrašas java.lang.package, kad būtų galima įgyvendinti refleksiją-

  • Laukas : Ši klasė naudojama rinkti deklaratyvią informaciją, pvz., Duomenų tipą, prieigos modifikatorių, kintamojo pavadinimą ir vertę.
  • Metodas : Ši klasė naudojama rinkti deklaratyvią informaciją, pvz., Prieigos modifikatorių, grąžinimo tipą, pavadinimą, parametrų tipus ir metodo išimties tipą.
  • Statybininkas : Ši klasė naudojama rinkti deklaratyvią informaciją, pvz., Prieigos modifikatorių, konstruktoriaus pavadinimą ir parametrų tipus.
  • Redaguoti : Ši klasė naudojama rinkti informaciją apie tam tikrą prieigos modifikatorių.

Ne, pažvelkime į „Java Reflection“ API metodus,



Java.lang.Class naudojami metodai

Metodas

apibūdinimas

viešoji eilutė getName ()

grąžina klasės pavadinimą

public static „Class forName“ („String className“) meta „ClassNotFoundException“

įkelia klasę ir grąžina klasės klasės nuorodą.

public Object newInstance () meta „InstantiationException“, „IllegalAccessException“

sukuria naują egzempliorių.

viešoji loginė yra sąsaja ()

patikrina, ar tai sąsaja.

viešoji loginė yra „Array“ ()

patikrina, ar tai masyvas.

viešoji loginė reikšmė isPrimitive ()

patikrina, ar jis primityvus.

viešoji klasė „getSuperclass“ ()

grąžina superklasės klasės nuorodą.

viešasis laukas [] getDeclaredFields () išmeta „SecurityException“

pateikia bendrą šios klasės laukų skaičių.

public metodas [] getDeclaredMethods () meta „SecurityException“

pateikia bendrą šios klasės metodų skaičių.

public Constructor [] getDeclaredConstructors () meta „SecurityException“

pateikia bendrą šios klasės konstruktorių skaičių.

public metodas „getDeclaredMethod“ (eilutės pavadinimas, klasės [] parametro tipai) meta „NoSuchMethodException“, „SecurityException“

grąžina metodo klasės egzempliorių.

Pažvelkime į priekį su straipsniu,

Kaip gauti klasės klasės objektą?

Yra 3 būdai, kaip gauti „Class“ klasės egzempliorių. Jie yra tokie:

  • klasės klasės forName () metodas
  • objektų klasės getClass () metodas
  • .klasės sintaksę

klasės klasės forName () metodas

  • naudojama dinamiškai pakrauti klasę.
  • grąžina klasės „Class“ egzempliorių.
  • Jis turėtų būti naudojamas, jei žinote visiškai kvalifikuotą klasės pavadinimą. Tai negali būti naudojama primityviems tipams.

Pažiūrėkime paprastą „forName“ () metodo pavyzdį.

class Simple {} class Test {public static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}

Išvestis:

Paprasta

„Java Reflection“: objektų klasės API getClass () metodas

Tai grąžina „Class“ klasės egzempliorių. Jis turėtų būti naudojamas, jei žinote tipą. Be to, jis gali būti naudojamas su primityviais.

class Simple {} class Test {void printName (Object obj) {class c = obj.getClass () System.out.println (c.getName ())} public static void main (String args []) {Simple s = new Paprastas () testas t = naujas testas () t.printVardas (-ai)}}

Išvestis:

Paprasta

konvertuoti dvigubą į int

Klasės sintaksė

Jei tipas yra, bet nėra egzemplioriaus, galima gauti klasę, prie pavadinimo pridedant „.class“. Jis taip pat gali būti naudojamas primityviems duomenų tipams.

klasės testas {public static void main (eilutės argumentai []) {c klasė = loginės reikšmės.class System.out.println (c.getName ()) klasė c2 = Test.class System.out.println (c2.getName ()) }}

Išvestis:

loginis

Testas

Dabar tęskime šį „Java Reflection“ API straipsnį

„Java Reflection“ API naudojimo pranašumai ir trūkumai

„Java Reflection“ API naudojimo pranašumai

  • Išplėtimo savybės: Programa gali naudoti išorines, vartotojo apibrėžtas klases, kurdama išplėstumo objektų egzempliorius, naudodama jų visiškai kvalifikuotus pavadinimus.
  • Derinimo ir testavimo įrankiai : Derintojai naudojasi refleksijos savybe, norėdami ištirti privačius narius klasėse.

„Java Reflection“ API naudojimo trūkumai

  • Našumas virš galvos: Atspindinčių operacijų našumas yra lėtesnis nei neatitinkančių kolegų, todėl jų reikėtų vengti kodo skiltyse, kurios dažnai naudojamos efektyvumui jautriose programose.
  • Vidinių ekspozicija: Atspindintis kodas nutraukia abstrakcijas ir todėl gali pakeisti elgesį atnaujinus platformą.

Taigi mes priėjome šį straipsnį apie „Java Reflection API“. Jei norite sužinoti daugiau,patikrinkite autorius - patikima internetinė mokymosi įmonė „Edureka“. „Edureka“ „Java J2EE“ ir „SOA“ mokymo ir sertifikavimo kursai skirti mokyti jus tiek pagrindinėms, tiek pažangioms „Java“ koncepcijoms kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau paminėti tai šio straipsnio komentarų skiltyje ir kuo greičiau susisieksime su jumis.