java实现类似函数指针功能

如果我遍历一棵XML树,对所有节点进行统一的操作,我希望这个操作是由用户提拱的一个函数。所以想像C/C++中一样传一个函数指针当做参数,然后在我的函数中调用,怎么做到类似的功能呢?

你可以先用C风格的代码来写,然后我给你改成Java风格。

简单的说,如果你用的是C,可能会这么写:

void processXML(XML*, void(*func)(XMLNODE*))
{
//...
}

//用户自定义的函数
void displayNode(XMLNODE* p)
{
//
}

//用户自定义的函数
void saveNode(XMLNODE* p)
{
//...
}

然后可能这样调用:

process(xml, displayNode);
process(xml, saveNode);

在Java里面,类似这样:

//需要用户实现的接口
interface XMLNodeAction
{
   public void processNode(Node node);
}

interface XML
{
    public void process(XMLNodeAction action);
}

然后用户实现:

class DisplayNode implements XMLNodeAction
{
   public void processNode(Node node)
    {
    //todo
    }
}

class SaveNode implements XMLNodeAction
{
   public void processNode(Node node)
    {
    //todo
    }
}

调用的时候这样:

xml.process(new DisplayNode());
xml.process(new SaveNode());





------------------------------------------------------------------------------------------------------------------------------------------------------------------------


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值