Metaprogramovanie - koronaprednáška 8

Zdroj
ručne priradené
Pridané

Pozrieť na YouTube →

Preber si túto prednášku so svojou AI

Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.

Otvoriť AI: ChatGPT · Claude · Gemini

Zhrnutie prednášky

Prednáška predstavuje reflexiu v programovacom jazyku Java a porovnáva ju s jednoduchšou reflexiou v Pythone. Na príklade generického porovnania dvoch objektov podľa hodnôt atribútov ukazuje, že v Jave je potrebný zložitejší kód: kontrola null, porovnanie tried, získanie atribútov, ich hodnôt a prechod cez predkov pomocou getSuperclass. Reflexia v Jave je postavená len nad triedami a nie nad inštanciami, preto sa pracuje s osobným objektom triedy Class, ktorý danú triedu popisuje. Získať ho možno cez getClass(), operátor .class alebo atribút TYPE obalových tried pre primitívne typy. Na príklade triedy Student v Jupyter notebooku sa ukazuje, že Class je generická trieda, a začína sa výpis informácií o triede, napríklad jej názov a predok.

  • - Reflexia v Jave je zložitejšia ako v Pythone, kde je prirodzenou súčasťou jazyka.
  • - Java reflexia pracuje len s triedami; inštancie a triedy samy neposkytujú informácie o svojej štruktúre.
  • - Reflexívny pohľad na triedu sa získa cez obj.getClass(), Trieda.class alebo Wrapper.TYPE pre primitívne typy.
  • - Výsledkom je inštancia generickej triedy java.lang.Class, ktorá zachová statický typ v generických metódach.
  • - Porovnanie objektov cez reflexiu v Jave vyžaduje ošetrenie null, kontrolu rovnakej triedy a prechod atribútov všetkých predkov cez getSuperclass().
  • - Z objektu Class možno získať napríklad názov triedy (getName) a jej predka (getSuperclass).

Zhrnutie pripravené s pomocou AI z prepisu videa.