Java 如何解决LambdaMetafactory中的错误参数
我试图在App.java的main方法中使用LambdaMetafactory.metafactory()执行带注释的方法。代码可在此处找到: 如果我试图执行此代码,它将引发异常:Java 如何解决LambdaMetafactory中的错误参数,java,lambda,method-reference,Java,Lambda,Method Reference,我试图在App.java的main方法中使用LambdaMetafactory.metafactory()执行带注释的方法。代码可在此处找到: 如果我试图执行此代码,它将引发异常: Incorrect number of parameters for instance method invokeVirtual com.drfits.transfer.TransferExecutorImpl.execute:(Transfer)void; 0 captured parameters, 1 func
Incorrect number of parameters for instance method invokeVirtual com.drfits.transfer.TransferExecutorImpl.execute:(Transfer)void; 0 captured parameters, 1 functional interface method parameters, 1 implementation parameters
错误试图告诉您没有传递其他参数。它期望一个,但你没有通过一个 我建议您查看正在传递的参数,并将它们与构建lambda时实际传递的参数进行比较 首先写下您要做的事情和lambda,看看您应该传递哪些参数。使用代码
TransferExecutor transferExecutor= new TransferExecutorImpl();
Function<Transfer, Void> commonLambda = transferExecutor::execute;
… .getTarget().invokeExact((TransferExecutorImpl)transferExecutor);
函数commonLambda=transferExecutor::execute
指接口方法,而您通过注释标识的方法是TransferXeCutorImpl
中声明的方法
关于绑定捕获的值,请参阅和以获取更多解释和示例。不要只链接到整个项目的主页。在这里发布您的问题所涉及的代码。我在参数中找不到错误,因此我已请求对上述代码提供帮助。@EvgeniyFitner您是否尝试过我的建议,将您的详细信息与编译器生成的详细信息进行比较?
… .getTarget().invokeExact((TransferExecutorImpl)transferExecutor);