[英]How to import a closure from groovy to java?
我正試圖從一個groovy腳本中提取一個閉包。 我將閉包定義為
def printMe = {str ->println str}
在我的groovy文件中,然后嘗試通過從綁定中抓取它來使用它,如下所示:
GroovyScriptEngine gse = new GroovyScriptEngine(new String[] { "scripts" });
Binding binding = new Binding();
gse.run("test.groovy", binding);
Closure cls = (Closure) binding.getVariable("printMe");
cls.call("foo");
但是當我運行它時,我收到以下錯誤。
groovy.lang.MissingPropertyException: No such property:
printMe for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:55)
at GroovyTry.main(GroovyTry.java:19)
有沒有辦法從groovy腳本中獲取閉包(或普通方法)?
如果從閉包聲明中省略def
,會發生什么?
printMe = { str -> println str }
通過使用def,我認為printMe
變量變為腳本的本地變量,而不是進入Binding
閱讀更多關於范圍和“def”的語義
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.