Java Reflection API: Lahat ng Kailangan Mong Malaman



Ipakilala ka ng artikulong ito sa Java Reflection API at makakatulong din kung paano gumagana ang Reflection sa Java at kung ano ito eksakto sa demonstrasyon

Pagninilay ay isang proseso ng pagsusuri o pagbabago ng pag-uugali ng run time ng isang klase sa run time . Java Reflection API ay ginagamit upang manipulahin ang klase at ang mga kasapi nito na may kasamang mga patlang, pamamaraan, tagapagbuo, atbp. sa runtime. Sa artikulong ito maiintindihan namin ang detalye ng Java Reflection API.

Ang artikulong ito ay magtutuon sa mga sumusunod na tagubilin:





Kaya't magsimula tayo sa mga pahiwatig na ito sa artikulong ito sa Java Reflection API

Saan ginagamit ang Java Reflection API?

Ang Reflection API ay pangunahing ginagamit sa:



  • IDE (Integrated Development Environment) hal. Eclipse, MyEclipse, NetBeans atbp.
  • Debugger
  • Mga Kasangkapan sa Pagsubok atbp.

Kaya kung ano ang Class sa Java lang sumasalamin sa package?

Klase sa java.lang.reflect Package?

Ang sumusunod ay isang listahan ng iba't ibang mga klase sa Java sa java.lang.package upang magpatupad ng repleksyon-

  • Patlang : Ang klase na ito ay ginagamit upang makalikom ng impormasyong nagpapahayag tulad ng datatype, access modifier, pangalan at halaga ng isang variable.
  • Pamamaraan : Ang klase na ito ay ginagamit upang mangolekta ng impormasyong nagpapahayag tulad ng modifier ng pag-access, uri ng pagbabalik, pangalan, mga uri ng parameter at uri ng pagbubukod ng isang pamamaraan.
  • Tagabuo : Ang klase na ito ay ginagamit upang makalikom ng impormasyong nagpapahayag tulad ng access modifier, pangalan at mga uri ng parameter ng isang tagapagbuo.
  • I-edit : Ang klase na ito ay ginagamit upang mangalap ng impormasyon tungkol sa isang partikular na modifier ng pag-access.

Huwag hayaan nating tingnan ang mga pamamaraan ng Java Reflection API,



Mga pamamaraang ginamit sa java.lang.Class

Pamamaraan

Paglalarawan

pampublikong String getName ()

ibinalik ang pangalan ng klase

pampublikong static na Class forName (String className) ay nagtatapon ng ClassNotFoundException

mga tutorial sa visual studio para sa mga nagsisimula

naglo-load ng klase at ibinabalik ang sanggunian ng klase ng Klase.

public Object newInstance () nagtatapon ng InstantiationException, IllegalAccessException

lumilikha ng bagong halimbawa.

pampublikong boolean ayInterface ()

suriin kung ito ay interface.

pampublikong boolean ayArray ()

suriin kung ito ay array.

pampublikong boolean ayPrimitive ()

suriin kung ito ay primitive.

pampublikong Klase getSuperclass ()

ibabalik ang sanggunian sa klase ng superclass.

public Field [] getDeclaredFields () nagtatapon ng SecurityException

ibabalik ang kabuuang bilang ng mga patlang ng klase na ito.

pampublikong Pamamaraan [] getDeclaredMethods () nagtatapon ng SecurityException

ibabalik ang kabuuang bilang ng mga pamamaraan ng klase na ito.

publikong Tagabuo [] getDeclaredConstructors () ay nagtatapon ng SecurityException

ibinalik ang kabuuang bilang ng mga nagtayo ng klase na ito.

publikong Pamamaraan getDeclaredMethod (String name, Class [] parameterTypes) throws NoSuchMethodException, SecurityException

ibabalik ang halimbawa ng klase ng pamamaraan.

Sumulong tayo sa artikulo,

Paano makukuha ang object ng Class class?

Mayroong 3 mga paraan upang makuha ang halimbawa ng klase ng Klase. Ang mga ito ay ang mga sumusunod:

  • para sa Pangalan () paraan ng klase ng Klase
  • getClass () na paraan ng klase ng Bagay
  • ang .class syntax

para sa Pangalan () paraan ng klase ng Klase

  • ay ginagamit upang mai-load ang klase nang pabago-bago.
  • ibinalik ang halimbawa ng klase ng Klase.
  • Dapat itong gamitin kung alam mo ang ganap na kwalipikadong pangalan ng klase. Hindi ito maaaring gamitin para sa mga primitive na uri.

Tingnan natin ang simpleng halimbawa ng forName () na pamamaraan.

klase Simpleng {} klase na Pagsubok {publiko static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}

Output:

Simple

Java Reflection: API getClass () na pamamaraan ng Object class

Ibinabalik nito ang halimbawa ng klase ng Klase. Dapat itong gamitin kung alam mo ang uri. Bukod dito, maaari itong magamit sa mga primitibo.

klase Simpleng {} klase Pagsubok {void printName (Object obj) {Class c = obj.getClass () System.out.println (c.getName ())} pampublikong static void main (String args []) {Simple s = bago Simple () Pagsubok t = bagong Pagsubok () t.printName (s)}}

Output:

Simple

Ang .class syntax

Kung ang isang uri ay magagamit ngunit walang pagkakataon kung gayon posible na makakuha ng isang Klase sa pamamagitan ng pagdaragdag ng '.class' sa pangalan ng uri. Maaari itong magamit para sa primitive na uri ng data din.

ano ang ginagawa ng isang scanner sa java
klase ng Pagsubok {public static void main (String args []) {Class c = boolean.class System.out.println (c.getName ()) Class c2 = Test.class System.out.println (c2.getName ()) }}

Output:

boolean

Pagsusulit

Ipagpatuloy natin ngayon ang artikulong ito ng Java Reflection API

Mga Kalamangan at Kalamangan sa Paggamit ng Java Reflection API

Mga kalamangan sa paggamit ng Java Reflection API

  • Mga Tampok ng Extensibility: Ang isang application ay maaaring gumamit ng mga panlabas, tinukoy ng gumagamit na mga klase sa pamamagitan ng paglikha ng mga pagkakataon ng mga object ng extensibility gamit ang kanilang mga kwalipikadong pangalan.
  • Mga tool sa pag-debug at pagsubok : Ginagamit ng mga debuger ang pagmamay-ari ng pagmuni-muni upang suriin ang mga pribadong miyembro sa mga klase.

Mga disadvantages ng paggamit ng Java Reflection API

  • Overhead ng Pagganap: Ang masasalamin na mga pagpapatakbo ay may mas mabagal na pagganap kaysa sa kanilang mga di-nasasalamin na katapat, at dapat na iwasan sa mga seksyon ng code na tinatawag na madalas sa mga application na sensitibo sa pagganap.
  • Pagkakalantad ng Mga Panloob: Sinasalamin ng mapanimdim na code ang mga abstraction at samakatuwid ay maaaring baguhin ang pag-uugali sa mga pag-upgrade ng platform.

Sa gayon ay natapos na kami sa artikulong ito sa 'Java Reflection API'. Kung nais mong matuto nang higit pa,tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online. Ang kurso sa pagsasanay at sertipikasyon ng Java J2EE at SOA ng Edureka ay idinisenyo upang sanayin ka para sa parehong core at advanced na mga konsepto ng Java kasama ang iba't ibang mga balangkas ng Java tulad ng Hibernate & Spring.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng artikulong ito at babalikan ka namin sa lalong madaling panahon.