Mechanizm refleksji: Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
Skalee (dyskusja | edycje)
m stub (zalążek)
→‎Java: usuwam "a"
Linia 17:
method.invoke(cl.newInstance(), null);
 
Oba fragmenty tworzą instancję klasy <code>Foo</code>, a następnie wywołują metodę <code>hello()</code> tej klasy. Różnica polega na tym, że w pierwszym fragmencie nazwa klasy i metody są częścią kodu źródłowego, podczas gdy w drugim fragmencie możliwe jest przeniesienie ich do zmiennych, które są ustalane w czasie wykonania kodu. Z drugiej strony kod wykorzystujący '''refleksję''' jest mniej czytelny i nie pozwala na sprawdzenie poprawności składniowej i semantycznej w trakcie kompilacji.
 
'''Mechanizm refleksji''' pozwala także na zdobywanie informacji o klasach w trakcie wykonania programu. W poniższym przykładzie Klasa <code>Main</code> sprawdza jaki jest typ zwracany przez metody klasy <code>Bar</code>.