我是靠谱客的博主 干净蚂蚁,最近开发中收集的这篇文章主要介绍groovy闭包基本用法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//闭包 基本用法
def closure_my = {
    println 'groovy'
}

//调用闭包
closure_my.call()
closure_my()

//闭包能默认接收一个参数
closure_my('hello closure')

//闭包接收多个参数
def closure1 = {
    i,j ->
    println 'groovy'
    println i + " " + j
}
closure1(1,2)

//闭包可以有默认值 再赋值 直接赋给j
def closure2 = {
    i = 'xx',j->
        println i + "--" + j
}
closure2("aa")

//柯里化闭包 动态给闭包添加默认参数 返回新的闭包
// curry 从左到右赋值  ncurry 从第几个开始赋值  rcurry从右到左赋值
// 注意: 这个方法得到的新闭包不可以再给已经赋值默认值得参数赋值了
def closure3 = {
    i,j->
        println i + "--" + j
}
def closure4 = closure3.rcurry("aa")
closure4.call("bb")

//对一个对象调用() 表示调用这个对象上的call方法
//建一个接口
interface Action{
    void call()
}
//新建一个方法
def func(aa){
    aa()
}
//执行方法
func(new Action(){

    @Override
    void call() {
        println "call"
    }
})
//新建类 通过类的对象()调用call方法
class Action1{
    def call(){
        println "类内部call"
    }
}
new Action1()



//closure成员
def closure5 = {
    int i,char j ->
}
println closure5.parameterTypes // 得到参数类型  输出:[int, char]
println closure5.maximumNumberOfParameters //最大参数个数 输出:2

//闭包的 this owner delegate
class TestClosure{
    def closure6 = {
        def closure7 = {
            println "this is: " + this
            println "owner is: " + owner
            println "delegate is: " + delegate
        }
        closure7()
    }
}
new TestClosure().closure6()
/**
 * 输出
 * this is: TestClosure@48e4374
 * owner is: TestClosure$_closure1@3e2e18f2
 * delegate is: TestClosure$_closure1@3e2e18f2cb
 * this      定义它的时候 所在的类的this 静态闭包当中为 class
 * owner     定义它的时候 所在类的对象
 * delegate  默认是owner
 */

//通过代理 获取代理中的方法
class TestFunc{
    def funcc(){
        println 'TestFunc : funcc'
    }
}
def closure8 = {
    funcc()
}
def funcc(){
    println "Closure : funcc"
}
closure8.delegate = new TestFunc()
closure8()
//代理策略 当代理和类本身都有同一个方法时  选择哪个优先
//默认是 OWNER_FIRST 默认是自己优先
//
closure8.resolveStrategy = Closure.DELEGATE_FIRST // 代理优先
closure8()

最后

以上就是干净蚂蚁为你收集整理的groovy闭包基本用法的全部内容,希望文章能够帮你解决groovy闭包基本用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部