Eu estou procurando uma maneira de passar um método por referência. Entendo que Java não passa métodos como parâmetros, no entanto, gostaria de obter uma alternativa.
Disseram-me que as interfaces são a alternativa para passar métodos como parâmetros, mas não entendo como uma interface pode atuar como método por referência. Se bem entendi, uma interface é simplesmente um conjunto abstrato de métodos que não estão definidos. Não quero enviar uma interface que precise ser definida todas as vezes, porque vários métodos diferentes podem chamar o mesmo método com os mesmos parâmetros.
O que eu gostaria de realizar é algo semelhante a isto:
public void setAllComponents(Component[] myComponentArray, Method myMethod) {
for (Component leaf : myComponentArray) {
if (leaf instanceof Container) { //recursive call if Container
Container node = (Container) leaf;
setAllComponents(node.getComponents(), myMethod);
} //end if node
myMethod(leaf);
} //end looping through components
}
invocado como:
setAllComponents(this.getComponents(), changeColor());
setAllComponents(this.getComponents(), changeSize());