教你实现传说中Java7.0的XML嵌入式语法

王朝java/jsp·作者佚名  2008-05-19
宽屏版  字体: |||超大  

Groovy的Team Leader-- Guillaume Laforge说,MOP(Meta Object Protocol)是他最喜欢的Groovy特性。

使用MOP可以简单的对属性和方法进行拦截和解释,intercept 已经因为AOP而被大家熟悉。在Groovy里,通过重载GroovyObject的get/setProperty()函数和invokeMethod()函数,可以加入自己的hook和behavior,比Java简单的多的实现proxy和delegator。

而更重要的是,MOP函数可以充当领域语言解释者的角色,拦截一些在Class里根本没有定义的属性、方法来进行解释,这就是Groovy里XML嵌入式语法的魔法根源。

比如如下的xml

<shop<book name="foo"<writer庄表伟</writer</book</shop

可以用groovy这样访问

println node.book.writer.text()

node类当然没有book,writer这样属于领域语言的属性,但通过重载getPropety(String name)函数,node类可以把对book,writer属性的访问,转换成相应DOM节点的访问。

实现请参看org.codehaus.groovy.sandbox.util.XMLList类的public Object getProperty(final String elementName)函数。

Guillaume Laforge说,It's an aspect of Groovy which makes the language very powerful, but rare are those who really know and use it.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有