Groovy 分类注入
来源:互联网 发布:c语言韩信点兵怎么理解 编辑:程序博客网 时间:2024/06/08 17:11
Groovy 分类注入
首先申明下,本文为笔者学习《Groovy 程序设计》的笔记,并加入笔者自己的理解和归纳总结。
1、use方法注入
Groovy使用use来注入方法,但该方法必须是静态的,并且第一个参数必须是目标对象。class AGroovyClass {def add(val1, val2) {val1 + val2}}class AGroovyClassExtend {def static add(self, val1, val2, val3) {self.add(self.add(val1, val2), val3)}}use(AGroovyClassExtend) {obj = new AGroovyClass()println obj.add("Hello ", "World!")println obj.add("Hello ", "World!", " Welcome to Groovy!")}返回
Hello World!
Hello World! Welcome to Groovy!
2、Category注解
(1) Category注解将静态方法转变为实例方法。class AGroovyClass {def add(val1, val2) {val1 + val2}}@Category(AGroovyClass)class AGroovyClassExtend {def add(val1, val2, val3) {add(add(val1, val2), val3)}}use(AGroovyClassExtend) {obj = new AGroovyClass()println obj.add("Hello ", "World!")println obj.add("Hello ", "World!", " Welcome to Groovy!")}返回
Hello World!
Hello World! Welcome to Groovy!
(2) 注入的方法可以使用类或闭包作为参数
class AGroovyClass {}@Category(AGroovyClass)class AGroovyClassFilter {def filter(array, closure) {array.collect { closure(it) }}}use(AGroovyClassFilter) {obj = new AGroovyClass()println obj.filter([1, 2, 3, 4, 5, 6]) { it * it }}返回
[1, 4, 9, 16, 25, 36]
3、use方法支持多个分类注入。
class AGroovyClass { def add(val1, val2) { val1 + val2 }}@Category(AGroovyClass)class AGroovyClassExtend { def add(val1, val2, val3) { add(add(val1, val2), val3) }}@Category(AGroovyClass)class AGroovyClassFilter { def filter(array, closure) { array.collect { closure(it) } }}use(AGroovyClassExtend, AGroovyClassFilter) {obj = new AGroovyClass()println obj.add("Hello ", "World!")println obj.add("Hello ", "World!", " Welcome to Groovy!")println obj.filter([1, 2, 3, 4, 5, 6]) { it * it }}
4、注入的方法拦截原有方法
class AGroovyClass { def add(val1, val2) { val1 + val2 } def add(val1, val2, val3) { val1 + val2 + val3 }}class AGroovyClassExtend { def static add(self, val1, val2) { "AGroovyClassExtend add" }// 只有指定了self的类型,才会拦截 def static add(AGroovyClass self, val1, val2, val3) { "AGroovyClassExtend add" }}use(AGroovyClassExtend) { obj = new AGroovyClass() println obj.add("Hello ", "World!") // Hello World! println obj.add("Hello ", "World!", " Welcome to Groovy!") // AGroovyClassExtend add}
0 0
- Groovy 分类注入
- Groovy EMC注入
- Groovy 实例注入
- Groovy Mixin注入
- Groovy方法注入
- Grails Resources.groovy 构造函数注入
- 13.2Groovy使用ExpandoMetaClass注入方法
- SQL注入分类
- Groovy方法拦截,注入,合成,委托和动态类
- groovy
- groovy
- Groovy
- Groovy
- Groovy
- groovy
- groovy
- Groovy
- Groovy
- 谈谈Java反射机制
- windows程序设计读书笔记二
- javascript-Doctype, img图片预加载, js文档碎片
- JNI分析
- Spring之IOC讲解
- Groovy 分类注入
- Javascript > Eclipse > 自动代码规范化
- 结构体和数组
- spring、hibernate事务管理的区别及整合方式
- 初读《人月神话》
- Oracle批量导入数据
- 设置RadioButton的drawableTop大小
- lintcode111爬楼梯问题(动态规划easy)
- 梳理caffe代码math_functions(一)