加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

替换’this’在Groovy中调用方法引用

发布时间:2020-12-14 16:27:57 所属栏目:大数据 来源:网络整理
导读:从实例获取引用时,调用非静态方法引用很容易: class Foo { void funk() { println "okay!" } }Foo foo = new Foo()Closure closure = foo.funkclosure() // okay! is printed 但是当从类中获取方法引用时如何替换它? class Foo { void funk() { println "o
从实例获取引用时,调用非静态方法引用很容易:

class Foo { void funk() { println "okay!" } }
Foo foo = new Foo()
Closure closure = foo.&funk
closure() // okay! is printed

但是当从类中获取方法引用时如何替换它?

class Foo { void funk() { println "okay!" } }
Foo foo = new Foo()
Closure closure = Foo.&funk
// closure.delegate = foo // not helpful
closure()
// => java.lang.IllegalArgumentException: object is not an instance of declaring class

解决方法

以下解决了您的问题:

class Foo { void funk() { println "okay!" } }
Closure closure = { Foo.&funk.rehydrate(delegate,it,it).call() }
Foo foo = new Foo()
closure(foo)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读