java - Java - 为什么立即执行的 lambda 函数会引发“在接口 [...] 中找到多个非覆盖抽象方法”?
问题描述
List<String> list = ( () -> new LinkedList<String>() )();
上面的代码引发了以下问题:Multiple non-overriding abstract methods found in interface java.util.List
.
这个错误是什么意思?
解决方案
这不是我得到的错误消息,尽管它肯定是无效的 Java 语法。
您不能直接在 Java 语法中调用 lambda 表达式。编译器没有用于转换 lambda 表达式以直接调用它的语法生成。
它要么必须分配给功能接口类型,要么作为参数传递给方法,要么强制转换为功能接口类型。
如果将 lambda 表达式转换为函数式接口类型(此处为Supplier
),则可以显式调用它。
List<String> list = ( (Supplier<List<String>>) () -> new LinkedList<String>() ).get();
推荐阅读
- android - makeSceneTransitionAnimation 在使用 AndroidX 时显示错误
- python - 如何收集具有未知第一(批量)维度的张量?
- dart - Flutter基于间隔设置floatingactionbutton文本
- ssh - Dask-ssh 与本地调度程序?
- python-3.x - 是否可以提供两个位置参数的选择,其中必须选择两个位置参数之一?
- javascript - 如何创建一个返回 html 的 javascript 函数
- angular - 显示多列数据的 ag-grid 单元格渲染器
- sql-server - 如何从 RDP 会话到 Azure SQL Server 查找主机或公共 IP?
- python - 如何对嵌套的 pandas DataFrames 中的分组数组进行操作?
- excel - 循环遍历每个工作表以获取单元格值以传输到另一个工作表,其中列出了所有获得的值?