Java Pass方法作为参数

我正在寻找通过引用传递方法的方法。我知道Java不会将方法作为参数传递,但是,我想得到一个替代方法

我被告知接口是将方法作为参数传递的替代方法,但我不理解接口如何通过引用作为方法。如果我理解正确,接口只是一组未定义的抽象方法。我不想每次都发送一个需要定义的接口,因为几个不同的方法可以使用相同的参数调用相同的方法

我想完成的工作与此类似:

公共void setAllComponents(组件[]myComponentArray,方法myMethod){
用于(组件叶:myComponentArray){
if(容器的叶实例){//递归调用if容器
容器节点=(容器)叶;
setAllComponents(node.getComponents(),myMethod);
}//结束if节点
myMethod(leaf);
}//结束通过组件的循环
}

例如:

setAllComponents(this.getComponents(),changeColor());
setAllComponents(this.getComponents(),changeSize());

编辑:从Java 8开始,lambda表达式是一个很好的解决方案,因为其他答案已经指出。下面的答案是为Java7和更早版本编写的


请看一下命令模式

//注意:代码未经测试,但我相信这是有效的java。。。
公共类命令示例
{
公共接口命令
{
public void execute(对象数据);
}
公共类PrintCommand实现命令
{
公共void执行(对象数据)
{
System.out.println(data.toString());
}    
}
公共静态void调用命令(命令命令,对象数据)
{
命令。执行(数据);
}
公共静态void main(字符串…参数)
{
callCommand(新的PrintCommand(),“hello world”);
}
}

编辑:作为Pete Kirkham指出,,还有另一种方法可以使用访问者。visitor方法有点复杂-您的节点都需要使用acceptVisitor()方法来感知visitor-但是如果您需要遍历更复杂的对象图,则值得研究

发表评论