20、Groovy元编程:运行时与编译时的强大能力

Groovy元编程:运行时与编译时的强大能力

1. 运行时元编程技术回顾

Groovy的元编程提供了多种方法来拦截、注入和合成方法,下面是不同场景下的技术选择:
- 方法拦截
- 若有修改类源代码的权限,可在要拦截方法调用的类上实现 GroovyInterceptable 接口,只需实现 invokeMethod 方法。
- 若无法修改类或类为Java类,可使用 ExpandoMetaClass 或类别(categories)。 ExpandoMetaClass 更具优势,因为一个 invokeMethod 就能拦截类的任何方法;而类别则需要为每个被拦截的方法单独编写方法,且受 use 块限制。
- 方法注入
- 可使用类别或 ExpandoMetaClass 。类别在方法注入方面表现出色,能控制方法注入的位置,可通过不同类别实现不同版本的方法注入,还能轻松嵌套和混合多个类别。但类别注入的方法仅在 use 块内生效且限于执行线程。若想在任意位置使用注入的方法,或注入静态方法和构造函数, ExpandoMetaClass 是更好的选择,不过它不是Groovy的默认 MetaClass 。此外,使用 ExpandoMetaClass 可将方法注入到类的特定实例,而不影响整个类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值