Pobieranie informacji o fukcjach/procedurach

0

witam,

Mam 3 pytanka z Javy. Bardzo byłbym rad jak ktoś udzieliłby mi na nie odpowiedzi.

  1. Uruchamianie funkcji, której nazwę przetrzymujemy w zmiennej.

Mamy na przykład funkcje:

void doSomething() {}
void doMath(){}
void doStringManiupulation(){}

Następnie mamy Stringa

String myFunctionName;

Następnie ustawiamy np.

myFunctionName = 'doMath';

Jak wywołać funkcję której nazwa jest zawarta w zmiennej 'myFunctionName' ?
(oczywiście nie chodzi mi o 'case' ani

if (myFunctionName == 'doMath') doMath();

ale bardziej coś ala odpowiednik funkcji eval z PHP

PHP:

eval(myFunctionName.'();');

Może jakieś inne uruchomienie?
(myFunctionName może przyjmować dowolna wartość, jak nie będzie takiej funkcji to najwyżej zwróci błąd)

  1. Jak sprawdzić czy funkcja o podanej nazwie istnieje i jest 'wykonywalna' (nie jest np. private).

  2. Sprawdzanie parametrów funkcji

Mamy np funkcje:

void addIntToString(String v1, int v2) {}
void ourTestFnc() {}

Jak z funkcji ourTestFnc() sprawdzić ile parametrów przyjmuje funkcja 'addIntToString' przy wywołaniu i jaki jest ich typ (string i int)

0

Do dokumentacji nie zajrzałeś.

klasa=Class.forName(nazwaKlasy);
Method metoda=klasa.getDeclaredMethod(nazwaMetody,..);
metoda.invoke(klasa,argumenty);

Jak się tym bawiłem, to

Method metoda=klasa.getDeclaredMethod(nazwaMetody,..);
metoda.invoke(klasa,argumenty);

nie działało. Pobierałem wszystkie metody

Method[] metody=klasa.getMethods();

i w pętli wybierałem tę, której nazwa się zgadzała.
Poczytaj o klasach Class i Method.

1 użytkowników online, w tym zalogowanych: 0, gości: 1