• Nie Znaleziono Wyników

Programowanie refleksyjne.  P25-JustynaKorycińska

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie refleksyjne.  P25-JustynaKorycińska"

Copied!
10
0
0

Pełen tekst

(1)

Justyna Korycińska

(2)

Programowanie refleksyjne polega na dynamicznym korzystaniu ze struktur języka programowania, które nie musiały być zdeterminowane w momencie

tworzenia oprogramowania.

(3)

Class

Field

Method

Array

Constructor

Powyższe klasy zgrupowane są w pakietach java.lang i java.lang.reflect

(4)

Wszystkie klasy tworzone w Javie mogą być używane zarówno w sposób tradycyjny jak i refleksyjny.

Oczywiście klasa nie może być prywatna, gdyż wtedy nie będzie mogła być skompilowana jako główna klasa pliku Java.

(5)

// bez refleksji

Foo foo = new Foo();

foo.hello();

// z refleksją

Class cl = Class.forName("Foo");

Method method = cl.getMethod("hello");

method.invoke(cl.newInstance());

(6)

Należy sprawdzić liczbę i typy parametrów oraz wynik.

Należy bardzo uważać na ewentualną możliwość przeciążenia metod oraz konstruktorów.

Ważną kwestią, która może uniemożliwić korzystanie z obiektów refleksyjnych jest sposób tworzenia tych obiektów. Do tego celu nadzorca obiektu refleksyjnego wykorzystuje konstruktor bezparametrowy. Jeśli klasa wymaga tworzenia z użyciem innego konstruktora, to mogą pojawić się trudności z jej poprawnym użyciem.

(7)

Kolejną kwestią jest obsługa błędów. Powinna ona być na znacznie wyższym poziomie, niż w przypadku

zwykłych obiektów. Poza obsługą standardowych przypadków, które mogą zajść w czasie normalnej pracy powinna ona uwzględnić kwestie związane z dynamicznym dostępem do samego obiektu jak i jego składowych.

(8)

Wszystkie te utrudnienia powodują, że obiekty

refleksyjne powinny być używane tylko wtedy, gdy jest to naprawdę potrzebne.

(9)

W językach programowania zorientowanych

obiektowo, refleksji używa się do przeprowadzania inspekcji w klasach, interfejsach lub metodach.

Można to zrobić w trakcie działania programu i nie musimy znać ich nazw.

Refleksja może być dynamicznie zaadaptowana do różnych sytuacji w zależności od tego co

potrzebujemy,

(10)

Przykładowo aplikacja używa dwóch różnych klas X i Y zamiennie do wykonywania podobnych czynności. Bez refleksji, aplikacja może wymagać wiele kodu, by

wywołać metody klasy X i Y. Jednak przy użyciu

refleksji, aplikacja może wykorzystać odbicie w celu wywołania metod w klasach X i Y.

Cytaty

Powiązane dokumenty

Z dobroci serca nie posłużę się dla zilustrowania tego mechanizmu rozwojem istoty ludzkiej, lecz zaproponuję przykład róży, która w pełnym rozkwicie osiąga stan

Definicja metody Zapiszrachunki do zapisu kolekcji rachunków oraz Odczytajprodukty do odczytu kolekcji rachunków z pliku o nazwie „R2” w trybie tekstowym (przy odczycie obiekty.

Gazy szklarniowe powodują efekt cieplarniany, który niestety nie jest zja- wiskiem korzystnym dla naszego globu. Dlatego też istotne jest dążenie do zmniejszania wielkości

Właściwości odbijające powierzchni zależą od: nierówności powierzchni, kąta padania fali i jej długości, polaryzacji fali, przenikalności dielektrycznej.. Określić

Należy jednak pamiętać, że w przypadku robót budowlanych innych niż budowa bądź przebudowa obiektu budow- lanego lub jego części nie wydaje się pozwolenia na użytkowanie

 Jakie pola należy wprowadzić, aby opisać stany w jakich mogą znajdować się obiekty danej klasy (np.: klasa opisująca wiadomości email może posiadać

– Tożsamość obiektu, która odróżnia go od innych obiektów i jest niezależna od wartości jego atrybutów, od powiązań z innymi obiektami, od lokalizacji bytu w

Jeżeli zatrzymamy działanie systemu zobaczymy diagram obiektów, z których każdy jest w innym stanie i w pewnych szczególnych związkach z innymi obiektami...