前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Groovy】Groovy 方法调用 ( 使用闭包创建接口对象 | 接口中有一个函数 | 接口中有多个函数 )

【Groovy】Groovy 方法调用 ( 使用闭包创建接口对象 | 接口中有一个函数 | 接口中有多个函数 )

作者头像
韩曙亮
发布2023-03-30 10:22:06
4.4K0
发布2023-03-30 10:22:06
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、使用闭包创建接口对象 ( 接口中有一个函数 )


在 Groovy 中 , 声明一个接口 , 接口中定义了

1

个抽象函数 ,

代码语言:javascript
复制
interface OnClickListener {
    void onClick()
}

传统创建接口的方法如下 , 创建一个匿名内部类 ;

代码语言:javascript
复制
new OnClickListener() {
    @Override
    void onClick() {
        println "OnClick"
    }
}

使用闭包 , 也可以创建上述接口对象 , 闭包中的内容就是唯一的抽象函数内容 ;

代码语言:javascript
复制
// 使用闭包创建接口对象
OnClickListener listener = {
    println "OnClickListener"
}

调用

代码语言:javascript
复制
listener.onClick()

执行接口函数 , 执行结果如下 :

代码语言:javascript
复制
OnClickListener

代码示例 :

代码语言:javascript
复制
// I. 使用闭包创建接口, 接口中有 1 个函数


interface OnClickListener {
    void onClick()
}

void setOnClickListener (OnClickListener onClickListener) {
    onClickListener.onClick()
}

// 使用闭包创建接口对象
OnClickListener listener = {
    println "OnClickListener"
}

listener.onClick()
setOnClickListener(listener)

执行结果 :

代码语言:javascript
复制
OnClickListener

二、使用闭包创建接口对象 ( 接口中有多个函数 )


如果接口中定义了多个函数 ,

代码语言:javascript
复制
interface OnClickListener2 {
    void onClick()
    void onLongClick()
}

则在创建闭包时 , 在闭包后面添加

代码语言:javascript
复制
as 接口名

代码 , 如下 :

代码语言:javascript
复制
// 使用闭包创建接口对象
OnClickListener2 listener2 = {
    println "OnClickListener2"
} as OnClickListener2

上述方法会默认将接口的多个方法都设置为上述闭包方法 ;

执行接口对象的 onClick 和 onLongClick 方法 , 执行的都是相同的闭包方法 ;

代码语言:javascript
复制
listener2.onClick()
listener2.onLongClick()

上述

2

行代码执行结果都打印

代码语言:javascript
复制
OnClickListener2

代码示例 :

代码语言:javascript
复制
interface OnClickListener2 {
    void onClick()
    void onLongClick()
}

void setOnClickListener2 (OnClickListener2 onClickListener) {
    onClickListener.onClick()
}

// 使用闭包创建接口对象
OnClickListener2 listener2 = {
    println "OnClickListener2"
} as OnClickListener2

listener2.onClick()
listener2.onLongClick()

setOnClickListener2(listener2)

执行结果 :

代码语言:javascript
复制
OnClickListener2
OnClickListener2
OnClickListener2

三、完整代码示例


完整代码示例 :

代码语言:javascript
复制
// 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)

执行结果 :

代码语言:javascript
复制
OnClickListener
OnClickListener
OnClickListener2
OnClickListener2
OnClickListener2
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、使用闭包创建接口对象 ( 接口中有一个函数 )
  • 二、使用闭包创建接口对象 ( 接口中有多个函数 )
  • 三、完整代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档