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

文章目录

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

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

三、完整代码示例





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


在 Groovy 中 , 声明一个接口 , 接口中定义了 1 11 个抽象函数 ,


interface OnClickListener {
    void onClick()
}


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


new OnClickListener() {
    @Override
    void 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()


上述 2 22 行代码执行结果都打印


OnClickListener2



代码示例 :


interface OnClickListener2 {
    void onClick()
    void onLongClick()
}
void setOnClickListener2 (OnClickListener2 onClickListener) {
    onClickListener.onClick()
}
// 使用闭包创建接口对象
OnClickListener2 listener2 = {
    println "OnClickListener2"
} as OnClickListener2
listener2.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 OnClickListener2
listener2.onClick()
listener2.onLongClick()
setOnClickListener2(listener2)


执行结果 :


OnClickListener
OnClickListener
OnClickListener2
OnClickListener2
OnClickListener2


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

上一篇:【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器端开发 )


下一篇:【Groovy】Groovy 方法调用 ( 字符串切割 | 使用 Java 语法切割字符串 | 使用 Groovy 语法切割字符串直接为变量赋值 | 数组赋值给变量 变量个数小于等于数组长度 )