Domanda

  

Eventuali duplicati:
   Chiamare un metodo denominato “stringa” in fase di esecuzione in Java e C

ho bisogno di essere in grado di chiamare una funzione, ma il nome della funzione viene memorizzato in una variabile, è possibile tutto ciò. per esempio:

public void foo ()
{
     //code here
}

public void bar ()
{
     //code here
}

String functionName = "foo";

// bisogno ho di chiamare la funzione in base a ciò che è functionName

Anyhelp sarebbe grande, grazie

È stato utile?

Soluzione

Sì, è possibile, utilizzando la riflessione. Tuttavia, in considerazione anche Effective Java 2nd Edition, Articolo 53: Preferisco interfacce di riflessione . Se possibile, utilizzare le interfacce. Riflessione è raramente veramente necessario nel codice dell'applicazione generale.

Vedi anche

Domande correlate

Altri suggerimenti

Fatto facilmente con la riflessione. Alcuni esempi qui e qui .

I principali bit dell'essere codice

String aMethod = "myMethod";

Object iClass = thisClass.newInstance();
// get the method
Method thisMethod = thisClass.getDeclaredMethod(aMethod, params);
// call the method
thisMethod.invoke(iClass, paramsObj);

L'uso di riflessione.

Ecco un esempio

Con il riflessione API . Qualcosa di simile a questo:

    Method method = getClass().getDeclaredMethod(functionName);
    method.invoke(this);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top