【发布时间】:2013-02-24 18:20:16
【问题描述】:
我正在尝试找到一种方法,我可以采用二叉树类并遍历其节点,
在每个节点上执行 X 数量的内联操作,而无需重写相同的操作一遍又一遍的遍历代码。
我想如果 Java 允许函数指针,这对我来说会更容易弄清楚...
基本上,我需要的是以下内容:
public class BinaryTreeNode {
//...
public void inOrderTraversalFrom(BinaryTreeNode node, /* ??? */ actions) {
if(node.left != null)
inOrderTraversalFrom(node.left);
/* do something with "actions" here */
if(node.right != null)
inOrderTraversalFrom(node.right);
}
}
... actions 可以允许执行不同的方法,采用不同的参数集,具体取决于要在每个节点上执行的操作类型.
一个很好的例子是可以传递一个旨在绘制这些节点的类,接受一个 Graphics 对象作为它的参数之一,而一个旨在执行一些其他一系列动作的类不会需要一个 Graphics 对象作为参数,而是一组完全不同的参数。
这怎么可能?执行此操作的最动态方式是什么?
【问题讨论】:
-
@MitchWheat 非常有趣,我有时会使用它...但它仍然不能解决必须重写相同的
inOrderTraversalFrom方法来接受不同接口的问题。也许可以在这里结合使用泛型?
标签: java function generics methods binary-tree