Refleksje - cóż to takiego ?

0

Cześć,
czy moze ktoś powiedzieć czym są te refleksje ? Magiczna nazwa, zastanawiam się co ona tak na rpawdę znaczy. Nie chcę, żęby ktoś mi tu przepisał książkę, tylko sprzedał intuicję o co chodzii, co to daje, jak mniej więcej się tego używa,

0

Dzięki mechanizmowi refleksji możesz dowiedzieć się jakie klasy/metody/pola itp. zawiera program, w trakcie jego wykonywania.

Dość dobry art. http://plukasiewicz.net/Csharp_dla_zaawansowanych/Refleksja

1

Najprościej tłumacząc refleksja, to takie (wbudowane) API (klasy i metody) JVM, które pozwalają dowiedzieć się czegoś lub zrobić coś z już skompilowanym kodem javy. Każdy taki skompilowany plik (.class) zawiera metadane, na które składają się informacje o nazwie klasy, po czym dziedziczy oraz jej metod (wszystkich, w tym prywatnych) i pól. Dzięki temu możesz je poznać i użyć nawet dla kodu, o którego istnieniu nie miałeś pojęcia (bo np. pochodzi nie od Ciebie). Jest to często wykorzystywane przez różne narzędzia robiące coś z już skompilowanym kodem bajtowym - na przykład kompilatory kompilujące skompilowany byte-code do kodu natywnego lub procesory adnotacji różnych frameworków i specjalistycznych bibliotek (np. Spring, Mockito), które pozwalają dzięki temu na wywołanie metod fabrycznych lub konstruktorów klas i tym samym zbudowanie w pamięci obiektów tych klas, a następnie zarządzanie nimi. Innym zastosowaniem jest tworzenie i uruchamianie wtyczek, które mają takie same ustalone API, wywoływane przez aplikację główną. Ilość zastosowań jest właściwie nieograniczona.
Jedyny minus refleksji jest taki, że każda operacja dostępu do klasy lub jej elementu jest o wiele bardziej czasochłonna niż bezpośrednie wywołanie skompilowanego kodu, więc zastosowanie refleksji musi być uzasadnione tym, że kodu, do którego potrzebujemy dostęp nie mamy szans poznać na etapie kompilacji.

0

Podepnę się pod temat, mam programik i chciałbym sprzedawać licencję na niego bez kodu a klientowi dawać tylko .jar jak ograniczyć możliwość klientowi "re use" mojej pracy ??. jednocześnie w przyszłości fajnie było by możliwość dokładania do programu modułów w formie kolejnych plików .jar które automatycznie przy uruchomieniu zostaną "wykonane"

Co do tematu. Jest całe podejście "programowanie refleksyjne" w NET i VisualStudio działa to bardzo bardzo fajnie, jedna z paru rzeczy których mi brakuje w Javie(albo tylko netBeans'ie) to możliwość "złapania myszką" wskaźnika programu i przesunięcia go o 5 linijek w tył i prześledzenie tego jeszcze raz ;]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.