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.
D
DiscipuloDoSplinter
Neste caso vc quer efetuar a operação matemática ou fazer outra coisa?
explica melhor oq vc quer…
flow
italo.vendrameto
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
yorgan
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
H
hugov
[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.
/** * @author Vitor Hugo * */publicclassAlgebra{publicvoidoperacao(chartipo,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;}}publicintsoma(int...valor){intresultado=0;for(inti=0;i<valor.length;i++){resultado+=valor[i];}returnresultado;}publicintsubtracao(int...valor){intresultado=0;for(inti=0;i<valor.length;i++){resultado-=valor[i];}returnresultado;}publicintmultiplicacao(int...valor){intresultado=0;if(valor.length>0){resultado=valor[0];}for(inti=1;i<valor.length;i++){resultado*=valor[i];}returnresultado;}publicstaticvoidmain(String[]args){Algebraalgebra=newAlgebra();algebra.operacao('+',1,2,1);}}
Dá uma olhada neste código e ve se te atendi.
marciobarroso
Você pode fazer como o italo.vendrameto indicou, mas reflection é como bebida alcólica. Deve ser usada com moderação.
[]'s
peczenyj
É possivel passar um objeto do tipo Method como argumento de outro objeto.
Entretanto vc precisa usar reflection.
importjava.lang.reflect.*;publicclassA{publicvoiddoIt(){System.out.println("ola!");}publicvoidinvokeMethod(Methodm)throwsException{m.invoke(this,newObject[0]);// perceba que eu passo this !}publicstaticvoidmain(String[]xxx){Aa=newA();try{Methodsomething=a.getClass().getDeclaredMethod("doIt",newClass[0]);a.invokeMethod(something);// Aqui enviamos o metodo doIt !}catch(Exceptione){e.printStackTrace();}}}