实战 Groovy: @Delegate 注释
2009-09-28 00:00:00 来源:WEB开发网清单 4. 输出 String 类的所有方法
String.class.methods.eachWithIndex{method, i->
println "${i} ${method}"
}
//output
0 public boolean java.lang.String.contentEquals(java.lang.CharSequence)
1 public boolean java.lang.String.contentEquals(java.lang.StringBuffer)
2 public boolean java.lang.String.contains(java.lang.CharSequence)
...
将 72 个 String 方法手动添加到 AllCapsString 并不是一种明智的方法,而是在浪费开发人员的宝贵时间。这就是 @Delegate 注释发挥作用的时候了。
了解 @Delegate
@Delegate 是一个编译时注释,指导编译器将所有 delegate 的方法和接口推到外部类中。
在将 @Delegate 注释添加到 body 之前,编译 AllCapsString 并使用 javap 进行检验,看看大部分 String 方法是否缺失,如清单 5 所示:
清单 5. 在使用 @Delegate 前使用 AllCapsString
$ groovyc AllCapsString.groovy
$ javap AllCapsString
Compiled from "AllCapsString.groovy"
public class AllCapsString extends java.lang.Object
implements groovy.lang.GroovyObject{
public AllCapsString(java.lang.String);
public java.lang.String toString();
public final java.lang.String getBody();
//snip...
现在,将 @Delegate 注释添加到 body,如清单 6 所示。重复 groovyc 和 javap 命令,将看到 AllCapsString 具有与 java.lang.String 相同的所有方法和接口。
- ››Groovy轻松入门
- ››实战:企业使用交换机VLAN路由配置
- ››实战案例分析:高质量软文对网站百度排名的影响
- ››实战经验浅谈网站搬家后的优化工作
- ››实战Active Directory站点部署与管理,Active Dir...
- ››实战操作主机角色转移,Active Directory系列之十...
- ››实战经验:巧用微博推广淘宝网店
- ››实战iPhone GPS定位系统
- ››实战Linux环境配置DBD:Oracle模块
- ››实战DeviceIoControl系列之一:通过API访问设备驱...
- ››实战DeviceIoControl系列之二:获取软盘/硬盘/光盘...
- ››实战DeviceIoControl系列之三:制作磁盘镜像文件
更多精彩
赞助商链接