Refleksja w Javie to potężne narzędzie, które pozwala na inspekcję klas, interfejsów, pól i metod w czasie wykonania. Jednym z najbardziej interesujących zastosowań refleksji jest możliwość wywoływania metod, które mogą być znane tylko podczas działania programu. Dziś pokażemy, jak za pomocą refleksji można wywołać metodę z parametrami.
Przykład użycia refleksji do wywołania metody z parametrami
Zacznijmy od przygotowania klasy, w której znajduje się metoda, którą będziemy chcieli wywołać refleksyjnie. Następnie przejdziemy przez proces wywoływania tej metody z użyciem refleksji.
// Klasa z metodą do wywołania
public class ReflectionExample {
// Metoda, która przyjmuje dwa parametry: liczbę i napis
public void displayMessage(int number, String message) {
// Wyświetla przekazany napis i liczbę
System.out.println("Received number: " + number +
" and message: " + message);
}
}
// Główna klasa z metodą main
public class Main {
public static void main(String[] args) {
try {
// Tworzenie obiektu klasy, w której znajduje się metoda
ReflectionExample example = new ReflectionExample();
// Pobieranie obiektu klasy Class
Class<?> cls = example.getClass();
// Pobieranie metody o nazwie 'displayMessage' z parametrami
// int i String
Method method = cls.getDeclaredMethod("displayMessage",
int.class, String.class);
// Wywołanie metody na obiekcie 'example' z parametrami 12 i "Hello"
method.invoke(example, 12, "Hello");
} catch (NoSuchMethodException | IllegalAccessException |
InvocationTargetException e) {
e.printStackTrace();
}
}
}
Opis kodu
- Definicja klasy
ReflectionExample
: Klasa ta zawiera metodędisplayMessage
, która przyjmuje dwa parametry: liczbę całkowitą (int
) oraz napis (String
). Ta metoda po prostu wyświetla te wartości na standardowym wyjściu. - Klasa
Main
z metodąmain
: Jest to punkt wejścia do programu. W tej metodzie wykorzystujemy refleksję do:- Pobrania referencji do obiektu klasy
ReflectionExample
. - Zdobycia informacji o metodzie
displayMessage
przy pomocy metodygetDeclaredMethod
, określając jej sygnaturę (typy parametrów). - Wywołania metody
displayMessage
na obiekcieexample
z odpowiednimi parametrami, używając metodyinvoke
.
- Pobrania referencji do obiektu klasy
Podsumowanie
Wywoływanie metod z parametrami za pomocą refleksji w Javie jest nie tylko możliwe, ale również stosunkowo proste, o ile zna się nazwę metody oraz jej parametry. Dzięki refleksji, Java daje programistom narzędzie do dynamicznego manipulowania kodem, co może być szczególnie użyteczne w aplikacjach, które wymagają dużej elastyczności. Refleksja powinna być jednak używana z rozwagą ze względu na potencjalny wpływ na wydajność i bezpieczeństwo aplikacji.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.