日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【错误记录】Groovy 闭包使用报错 ( 闭包中不能直接使用外部对象的方法 | 需要先设置 delegate 代理 )

發(fā)布時(shí)間:2025/6/17 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【错误记录】Groovy 闭包使用报错 ( 闭包中不能直接使用外部对象的方法 | 需要先设置 delegate 代理 ) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、報(bào)錯(cuò)信息
  • 二、解決方案





一、報(bào)錯(cuò)信息



在 Groovy 中的 Closure 閉包中 , 直接調(diào)用外部對(duì)象的方法 , 會(huì)報(bào)錯(cuò) ;

class Test {def fun() {println "fun"} }def closure = {fun() }closure()

報(bào)錯(cuò)信息 :

"D:\Program Files\Java\jdk1.8.0_221\bin\java.exe" "-Dtools.jar=D:\Program Files\Java\jdk1.8.0_221\lib\tools.jar" -Dgroovy.home=C:\Users\octop\.gradle\caches\modules-2\files-2.1\org.codehaus.groovy\groovy-all\2.3.11\f6b34997d04c1538ce451d3955298f46fdb4dbd4 "-javaagent:Y:\001_DevelopTools\006_IntelliJ_IDEA_Community\IntelliJ IDEA Community Edition 2019.3.1\lib\idea_rt.jar=14846:Y:\001_DevelopTools\006_IntelliJ_IDEA_Community\IntelliJ IDEA Community Edition 2019.3.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\octop\.gradle\caches\modules-2\files-2.1\org.codehaus.groovy\groovy-all\2.3.11\f6b34997d04c1538ce451d3955298f46fdb4dbd4\groovy-all-2.3.11.jar org.codehaus.groovy.tools.GroovyStarter --main groovy.ui.GroovyMain --classpath .;Y:\002_WorkSpace\003_IDEA\Groovy_Demo\build\classes\groovy\main;C:\Users\octop\.gradle\caches\modules-2\files-2.1\org.codehaus.groovy\groovy-all\2.3.11\f6b34997d04c1538ce451d3955298f46fdb4dbd4\groovy-all-2.3.11.jar --encoding=UTF-8 Y:\002_WorkSpace\003_IDEA\Groovy_Demo\src\main\groovy\Groovy.groovy Caught: groovy.lang.MissingMethodException: No signature of method: Groovy.fun() is applicable for argument types: () values: [] Possible solutions: run(), run(), run(java.io.File, [Ljava.lang.String;), find(), find(groovy.lang.Closure), any() groovy.lang.MissingMethodException: No signature of method: Groovy.fun() is applicable for argument types: () values: [] Possible solutions: run(), run(), run(java.io.File, [Ljava.lang.String;), find(), find(groovy.lang.Closure), any()at Groovy$_run_closure1.doCall(Groovy.groovy:10)at Groovy$_run_closure1.doCall(Groovy.groovy)at Groovy.run(Groovy.groovy:14)Process finished with exit code 1



二、解決方案



在 Closure 閉包中 , 如果要調(diào)用外部對(duì)象的方法 , 需要先設(shè)置 Closure 閉包對(duì)象的 delegate 成員為指定的外部對(duì)象 ;

class Test {def fun() {println "fun"} }// 閉包中不能直接調(diào)用 Test 對(duì)象中的方法 // 此時(shí)可以通過(guò)改變閉包代理進(jìn)行調(diào)用 def closure = {fun() }closure.delegate = new Test() closure()

設(shè)置完 Closure 閉包對(duì)象的 delegate 之后 , 的執(zhí)行效果 :

總結(jié)

以上是生活随笔為你收集整理的【错误记录】Groovy 闭包使用报错 ( 闭包中不能直接使用外部对象的方法 | 需要先设置 delegate 代理 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。