如果我遍历一棵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());
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
#7 得分:0
回复于: 2007-03-30 11:52:28
|
|
#8 得分:0
回复于: 2007-03-30 23:48:13
|
|
#9 得分:2
回复于: 2007-03-30 23:52:32
|
|
#10 得分:0
回复于: 2007-03-31 00:04:46
|
|
#11 得分:0
回复于: 2007-03-31 14:08:45
|
|
#12 得分:2
回复于: 2007-03-31 17:06:46
|
|
#13 得分:2
回复于: 2007-03-31 20:47:25
|
|
#14 得分:2
回复于: 2007-03-31 21:48:20
|
|
#15 得分:0
回复于: 2007-04-01 21:39:29
|
|
#16 得分:0
回复于: 2007-04-01 21:40:21
|
|
#17 得分:0
回复于: 2007-04-02 00:23:40
|
|
#18 得分:0
回复于: 2007-04-02 13:31:11
|
|
#19 得分:0
回复于: 2007-04-02 14:32:36
|
|
#20 得分:0
回复于: 2007-04-02 23:46:37
|
|
#21 得分:0
回复于: 2007-04-02 23:48:06
|
|
#22 得分:0
回复于: 2007-04-03 00:00:04
|
|
#23 得分:0
回复于: 2007-04-03 14:57:59
|
|
#24 得分:0
回复于: 2007-04-03 14:59:01
|