Czy możemy wywołać metodę z parametrami za pomocą refleksji w Javie?

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

  1. 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.
  2. 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 metody getDeclaredMethod, określając jej sygnaturę (typy parametrów).
    • Wywołania metody displayMessage na obiekcie example z odpowiednimi parametrami, używając metody invoke.

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.

Scroll to Top