编辑:从Java 8开始,lambda表达式是一个不错的解决方案,正如其他 答案所指出的那样。以下答案是针对Java 7和更早版本编写的…
看一下命令模式。
// NOTE: code not tested, but I believe this is valid java...
public class CommandExample
{
public interface Command
{
public void execute(Object data);
}
public class PrintCommand implements Command
{
public void execute(Object data)
{
System.out.println(data.toString());
}
}
public static void callCommand(Command command, Object data)
{
command.execute(data);
}
public static void main(String... args)
{
callCommand(new PrintCommand(), "hello world");
}
}
编辑:正如Pete Kirkham指出的那样,还有另一种使用Visitor进行此操作的方法。访问者方法要复杂得多-你的节点都需要使用一种acceptVisitor()
方法来了解访问者-但是如果需要遍历更复杂的对象图,则值得研究。