我在kotlin文件中定义了这个函数
loadSubmissions(project.getProjectId(), (submissions, e) ->
{
updateSubmissions(submissions);
return null;
});
想要像这样用Java调用它
void updateSubmissions(List<Submission> submissionList)
{ .. }
带
Error:(226, 35) error: incompatible types: List<CAP#1> cannot be
converted to List<Submission>
where CAP#1 is a fresh type-variable:
CAP#1 extends Submission from capture of ? extends Submission
但它给了我
List<CAP#>
我意识到lambda函数的参数似乎是List<Submission>
而不是预期和定义的rgba()
如果我将类转换为java,我可以使用lambda回调轻松调用该函数。
我做错了什么
答案 0 :(得分:2)
您尚未公开变量submissions
的类型,但错误消息似乎表明它是List<? extends Submission>
。这是与List<Submission>
不同的类型,前一种类型的引用不能分配给后一种类型的变量(尽管反过来也可以)。
这至少给你带来两个问题:
updateSubmissions()
和loadSubmissions()
的第二个参数的类型不兼容。要解决此问题,您需要扩大这两种方法的参数类型或缩小变量类型submissions
。