【Groovy】Groovy 方法调用 ( 使用闭包创建接口对象 | 接口中有一个函数 | 接口中有多个函数 )
文章目录
- 一、使用闭包创建接口对象 ( 接口中有一个函数 )
- 二、使用闭包创建接口对象 ( 接口中有多个函数 )
- 三、完整代码示例
一、使用闭包创建接口对象 ( 接口中有一个函数 )
在 Groovy 中 , 声明一个接口 , 接口中定义了 111 个抽象函数 ,
interface OnClickListener {void onClick()
}
传统创建接口的方法如下 , 创建一个匿名内部类 ;
new OnClickListener() {@Overridevoid onClick() {println "OnClick"}
}
使用闭包 , 也可以创建上述接口对象 , 闭包中的内容就是唯一的抽象函数内容 ;
// 使用闭包创建接口对象
OnClickListener listener = {println "OnClickListener"
}
调用
listener.onClick()
执行接口函数 , 执行结果如下 :
OnClickListener
代码示例 :
// I. 使用闭包创建接口, 接口中有 1 个函数interface OnClickListener {void onClick()
}void setOnClickListener (OnClickListener onClickListener) {onClickListener.onClick()
}// 使用闭包创建接口对象
OnClickListener listener = {println "OnClickListener"
}listener.onClick()
setOnClickListener(listener)
执行结果 :
OnClickListener
二、使用闭包创建接口对象 ( 接口中有多个函数 )
如果接口中定义了多个函数 ,
interface OnClickListener2 {void onClick()void onLongClick()
}
则在创建闭包时 , 在闭包后面添加
as 接口名
代码 , 如下 :
// 使用闭包创建接口对象
OnClickListener2 listener2 = {println "OnClickListener2"
} as OnClickListener2
上述方法会默认将接口的多个方法都设置为上述闭包方法 ;
执行接口对象的 onClick 和 onLongClick 方法 , 执行的都是相同的闭包方法 ;
listener2.onClick()
listener2.onLongClick()
上述 222 行代码执行结果都打印
OnClickListener2
代码示例 :
interface OnClickListener2 {void onClick()void onLongClick()
}void setOnClickListener2 (OnClickListener2 onClickListener) {onClickListener.onClick()
}// 使用闭包创建接口对象
OnClickListener2 listener2 = {println "OnClickListener2"
} as OnClickListener2listener2.onClick()
listener2.onLongClick()setOnClickListener2(listener2)
执行结果 :
OnClickListener2
OnClickListener2
OnClickListener2
三、完整代码示例
完整代码示例 :
// 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 OnClickListener2listener2.onClick()
listener2.onLongClick()setOnClickListener2(listener2)
执行结果 :
OnClickListener
OnClickListener
OnClickListener2
OnClickListener2
OnClickListener2
【Groovy】Groovy 方法调用 ( 使用闭包创建接口对象 | 接口中有一个函数 | 接口中有多个函数 )相关推荐
- 【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )
文章目录 前言 一.静态代理的弊端 二.动态代理的优势 三.动态代理使用流程 1.目标对象接口 2.被代理对象 3.调用处理程序 4.客户端 四.动态生成 代理对象 类 的 字节码 文件数据 前言 代 ...
- 便携式液晶驱动板卡方案可支持1080P能驱动 HBR 4LANE EDP 接口的液晶面板有一个 miniHDMI 接口,两个 Type-C 信号接口。支持 HDR 高动态。
AP2KS REV1.1 是一款多功能便携式液晶显示器驱动板卡,可支持最高分辨率 2560*1600@60Hz, 能驱动 HBR 4LANE EDP 接口的液晶面板. 拥有一个 miniHDMI 接口 ...
- 【错误记录】Groovy 扩展方法调用报错 ( 静态扩展方法 或 实例扩展方法 需要分别配置 | 没有配置调用会报错 groovy.lang.MissingMethodException )
文章目录 一.报错信息 二.解决方案 一.报错信息 定义 Thread 扩展方法 , 下面的扩展方法 class ThreadExt {public static Thread hello(Threa ...
- java接口自动化demo_第一个java 接口自动化程序
第一个Java实现的接口测试 御都 字数 1065 · 阅读 0 2019-04-09 08:14 一.背景 使用HttpClient框架提交一个post&get申请,并对打印出返回值和状态码 ...
- android studio 跨进程,Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用...
本文首发于微信公众号「后厂技术官」 在上一篇文章Android IPC机制(二)用Messenger进行进程间通信中我们介绍了使用Messenger来进行进程间通信的方法,但是我们能发现Messeng ...
- ( 持续更新,目前含 200+ 工具类 ) DevUtils 是一个 Android 工具库, 主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。
DevUtils GitHub About ( 持续更新,目前含 200+ 工具类 ) Roadmap DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 ...
- es6 迭代器(遍历器)Iterator 自定义遍历器 lterator/简单模拟values方法 for of运行机制 Array/Set/Map默认迭代器接口 对象设置迭代器
文章目录 迭代器 Iterator 用处 (需要自定义遍历数据的时候) 自定义 遍历器 lterator 简单模拟values方法 Array Set Map 默认迭代器接口 entries valu ...
- 【BUG】@Transactional注解在同类方法调用中不生效
后台代码 今天做系统开发的时候,遇到了一个BUG:@Transactional注解在同类方法调用中不生效 代码如下: /*** @description: 快递100接口服务类* @date 2021 ...
- 【SSH】——Struts2中的动态方法调用(一)
首先我们来看一个简单的调用: 1.在web.xml中配置拦截器StrutsPrepareAndExecuteFilter.StrutsPrepareAndExecuteFilter实现了filter接 ...
最新文章
- 3MIN干完一周的工作量?快来看看应该如何部署 Kubernetes!
- 如何打开.etl文件?
- Jupyter Notebook 入门指南
- Android游戏开发系统控件-Dialog
- 手机长曝光怎么设置_摄影教程丨手机如何拍摄长曝光照片,流光快门,星空银河搞起来!...
- OpenCV3学习(12.2) 目标跟踪之运动模板法segmentMotion实现(Mat版本)
- ggplot2分面柱状图柱子比例一致_R语言柱状图
- 拓端tecdat|R语言计量经济学与有时间序列模式的机器学习预测
- 安卓手机当电脑摄像头(DroidCam网盘及使用方法)
- CCFCSP 201803-2碰撞的小球
- android手机系统怎么刷机包,安卓系统怎么刷机?安卓系统手机通用刷机教程
- NOIP2019数字游戏
- 小牛电动车能跑多快、多远?一起来了解一下
- Pycharm 教育版下载/安装 无需注册破解
- pygame初探:复刻小游戏《Flappy Bird》
- 给儿子的一封信——大学才是人生真正的起点
- linux 内存清理/释放命令
- 8款最好用的固定资产管理软件
- manjaro pacman glibc 2.33 not fount
- howler.js音频控制js库