【Groovy】Groovy 方法调用 ( 使用闭包创建接口对象 | 接口中有一个函数 | 接口中有多个函数 )
【摘要】
文章目录
一、使用闭包创建接口对象 ( 接口中有一个函数 )二、使用闭包创建接口对象 ( 接口中有多个函数 )三、完整代码示例
一、使用闭包创建接口对象 ( 接口中有一个函数...
一、使用闭包创建接口对象 ( 接口中有一个函数 )
在 Groovy 中 , 声明一个接口 , 接口中定义了 1 1 1 个抽象函数 ,
interface OnClickListener {
void onClick()
}
- 1
- 2
- 3
传统创建接口的方法如下 , 创建一个匿名内部类 ;
new OnClickListener() {
@Override
void onClick() {
println "OnClick"
}
}
- 1
- 2
- 3
- 4
- 5
- 6
使用闭包 , 也可以创建上述接口对象 , 闭包中的内容就是唯一的抽象函数内容 ;
// 使用闭包创建接口对象
OnClickListener listener = {
println "OnClickListener"
}
- 1
- 2
- 3
- 4
调用
listener.onClick()
- 1
执行接口函数 , 执行结果如下 :
OnClickListener
- 1
代码示例 :
// I. 使用闭包创建接口, 接口中有 1 个函数
interface OnClickListener {
void onClick()
}
void setOnClickListener (OnClickListener onClickListener) {
onClickListener.onClick()
}
// 使用闭包创建接口对象
OnClickListener listener = {
println "OnClickListener"
}
listener.onClick()
setOnClickListener(listener)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
执行结果 :
OnClickListener
- 1
二、使用闭包创建接口对象 ( 接口中有多个函数 )
如果接口中定义了多个函数 ,
interface OnClickListener2 {
void onClick()
void onLongClick()
}
- 1
- 2
- 3
- 4
则在创建闭包时 , 在闭包后面添加
as 接口名
- 1
代码 , 如下 :
// 使用闭包创建接口对象
OnClickListener2 listener2 = {
println "OnClickListener2"
} as OnClickListener2
- 1
- 2
- 3
- 4
上述方法会默认将接口的多个方法都设置为上述闭包方法 ;
执行接口对象的 onClick 和 onLongClick 方法 , 执行的都是相同的闭包方法 ;
listener2.onClick()
listener2.onLongClick()
- 1
- 2
上述 2 2 2 行代码执行结果都打印
OnClickListener2
- 1
代码示例 :
interface OnClickListener2 {
void onClick()
void onLongClick()
}
void setOnClickListener2 (OnClickListener2 onClickListener) {
onClickListener.onClick()
}
// 使用闭包创建接口对象
OnClickListener2 listener2 = {
println "OnClickListener2"
} as OnClickListener2
listener2.onClick()
listener2.onLongClick()
setOnClickListener2(listener2)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
执行结果 :
OnClickListener2
OnClickListener2
OnClickListener2
- 1
- 2
- 3
三、完整代码示例
完整代码示例 :
// I. 使用闭包创建接口, 接口中有 1 个函数
interface OnClickListener {
void onClick()
}
void setOnClickListener (OnClickListener onClickListener) {
onClickListener.onClick()
}
// 使用闭包创建接口对象
OnClickListener listener = {
println "OnClickListener"
}
listener.onClick()
setOnClickListener(listener)
// II. 使用闭包创建接口, 接口中有多个函数
interface OnClickListener2 {
void onClick()
void onLongClick()
}
void setOnClickListener2 (OnClickListener2 onClickListener) {
onClickListener.onClick()
}
// 使用闭包创建接口对象
OnClickListener2 listener2 = {
println "OnClickListener2"
} as OnClickListener2
listener2.onClick()
listener2.onLongClick()
setOnClickListener2(listener2)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
执行结果 :
OnClickListener
OnClickListener
OnClickListener2
OnClickListener2
OnClickListener2
- 1
- 2
- 3
- 4
- 5
文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。
原文链接:hanshuliang.blog.csdn.net/article/details/122294051
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)