gpt4 book ai didi

groovy - 使用来自 Groovy 的供应商调用 Java 方法

转载 作者:行者123 更新时间:2023-12-05 01:31:20 32 4
gpt4 key购买 nike

如何从 Groovy 应用程序调用接受供应商作为可变参数的 Java 方法?

我的Java方法:

public class Framework {

public static void run(Supplier<?>... suppliers) {
System.out.println(Arrays.stream(suppliers).map(supplier -> supplier.get()).collect(Collectors.toList()));
}

}

我的 Groovy 应用程序:
class Application {

static void main(String[] arguments) {
Framework.run { 42 }
}

}

IntelliJ 没有显示任何错误。但是,当我尝试执行我的 Groovy 应用程序时,出现异常:
Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: static Framework.run() is applicable for argument types: (Application$_main_closure1) values: [Application$_main_closure1@aecb35a]
Possible solutions: run([Ljava.util.function.Supplier;), dump(), find(), any(), grep(), grep(java.lang.Object)
at groovy.lang.MetaClassImpl.invokeStaticMissingMethod(MetaClassImpl.java:1525)
at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1511)
at org.codehaus.groovy.runtime.callsite.StaticMetaClassSite.call(StaticMetaClassSite.java:50)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
at Application.main(Application.groovy:6)

最佳答案

目前,我想唯一的解决方案是:

Framework.run({ 42 } as Supplier)
Framework.run({ 42 } as Supplier, { 43 } as Supplier)
Framework.run([{ 42 }, { 43 }] as Supplier[])

我也试过 Groovy 3.0.0-alpha-4。它支持 lambda 语法,但不支持 vararg 的情况。通过他们的 jira 快速搜索没有显示任何关于此事的问题。您可以按照 http://groovy-lang.org/support.html 中的说明提出问题。

关于groovy - 使用来自 Groovy 的供应商调用 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55160879/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com