Como passar um metodo como parametro

Alguem pode me auxiliar

Gostaria de poder ter um nome de um metodo guardado numa variavel e poder passar
a variavel e outos parametros.

Exemplo:

class calcula{

public static void main (String args[]){

aciona a = new aciona();

a.nome do metodo(10,6);

este nome do metodo seria uma variavel

}
}

class aciona{

void soma(int a, int b){
System.out.println(a+b);
}

void mult(int a, int b){
System.out.println(a*b);
}
}

Grato.

Não entendi bem o q vc quer fazer, mas vc poderia passar o objeto(que contém métodos e atributos).
Explicar melhor o q vc quer fazer exatamente.

Neste caso vc quer efetuar a operação matemática ou fazer outra coisa?

explica melhor oq vc quer…

flow

Vc pode usar reflection para fazer isso, com base em uma String com o nome do método, e os parâmetro que ele recebe chamar o método desejado

no seu caso acho que isso deve funcionar

Class[] classesParametro = new Class[2]; classesParametro[0] = new Integer(0).getClass(); classesParametro[1] = new Integer(0).getClass(); Object[] objetosParametro = new Object[2]; objetosParametro[0] = new Integer(10); objetosParametro[1] = new Integer(6); try { a.getClass().getMethod("soma",classesParametro).invoke(a, objetosParametro); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); }

Detalhe para isso funcionar seus métodos devem receber Ojbetos Integer e não ipo primitivos int

Deixa eu ver se entendi a logica do que quer fazer. Você quer atribuir uma variável com o nome do método e usar essa variavel para chamar ele?
Não seria melhor utilizar uma condicional IF ou um Switch Case?
tipo
String metodo = “soma”
int a = 10
int b = 11
if (metodo.equals(“soma”) a.soma(a, b);

Seria isso?
Abraço

[color=red]Não é possível passar métodos como parâmetro.[/color]

Não sei qual séria também a utilidade disto, mas se for para a classe executar o método com os parâmetros passados.

Você pode fazer assim.

[code]/**

  • @author Vitor Hugo

*/
public class Algebra {

public void operacao(char tipo , int... valor) {
	switch (tipo) {
	case '+':
		System.out.println(soma(valor));
		break;
	case '-':
		System.out.println(subtracao(valor));
		break;
	case '*':
		System.out.println(multiplicacao(valor));
		break;
	default:
		System.out.println("não foi possivel executar nenhum operação.");
		break;
	}
}

public int soma(int... valor) {
	int resultado = 0;
	for(int i = 0 ; i < valor.length ; i++) {
		resultado += valor[i];
	}
	return resultado;
}

public int subtracao(int ... valor) {
	int resultado = 0;
	for(int i = 0 ; i < valor.length ; i++) {
		resultado -= valor[i];
	}
	return resultado;
}

public int multiplicacao(int ...valor) {
	int resultado = 0;
	
	if(valor.length > 0) {
		resultado = valor[0];
	}
	
	for(int i = 1 ; i < valor.length ; i++) {
		resultado *= valor[i];
	}
	return resultado;
}

public static void main(String[] args) {
	Algebra algebra = new Algebra();
	algebra.operacao('+',1,2,1);
}

}[/code]

Dá uma olhada neste código e ve se te atendi.

Você pode fazer como o italo.vendrameto indicou, mas reflection é como bebida alcólica. Deve ser usada com moderação.

[]'s

É possivel passar um objeto do tipo Method como argumento de outro objeto.

Entretanto vc precisa usar reflection.

[code]import java.lang.reflect.*;

public class A{
public void doIt()
{
System.out.println(“ola!”);
}

    public void invokeMethod(Method m)throws Exception
    {
            m.invoke(this,new Object [0]); // perceba que eu passo this !
    }
    public static void main(String []xxx)
    {
            A a = new A();

            try {
                    Method something =
                    a.getClass().getDeclaredMethod("doIt", new Class[0]);

                    a.invokeMethod(something); // Aqui enviamos o metodo doIt !
            }catch (Exception e){
                    e.printStackTrace();
            }
    }

}[/code]