Sprawdzanie istnienia i właściwości funkcji/procedury

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

Wszystko znajdziesz w pakiecie java.lang.reflect.

0

Powiem tak - Java jest językiem statycznie typowanym i trzeba z tego jak najwięcej korzystać.
Oczywiście istnieje coś takiego, jak refleksja, ale powinno się ją stosować z umiarem.
Moim zdaniem początkujący programiści w Javie nie powinni używać jej w ogóle, bo nauczą się złego stylu programowania (np. przekazywania nazw funkcji jako napisów, gdzie powinno się zastosować abstrakcyjną fabrykę lub wzorzec command).

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